Допустим, у меня есть база данных с таблицами, называемыми box, item и box_contents, и я хочу получить любой элемент, который содержится в таблице box_content (все элементы, но отбрасывать те, которые arent в таблице box_contents). Каким будет правильный синтаксис sqllite для этого?
Зависит от вашей схемы, то есть как ваша таблица "box_content" означает, что она "содержит" определенный элемент. Например, если он делает это, имея столбец "ItemId", что внешняя ссылка на первичный ключ таблицы "item" "Id", то
SELECT item.*
FROM item
JOIN box_content ON (box_content.ItemId = item.Id)
будет работать нормально (предполагая, что вы имеете в виду именно то, что вы говорите, т.е. хотите, чтобы элементы содержались где-нибудь в таблице "box_content", и что ваше упоминание о еще одном "поле" таблицы на самом деле совершенно не имеет значения).
Но если ваша схема совершенно другая (или то, что вы действительно хотите сделать, сильно отличается от того, что вы сказали), тогда, конечно, так будет необходимый SQL. Как насчет редактирования вашего Q, чтобы показать операторы CREATE TABLE
и (если необходимо), любые комментарии примыкают к ним...?
Вам понадобится сделать то, что называется join между двумя таблицами.
У вас будет что-то вроде:
SELECT (item_columns)
FROM item i JOIN box_contents bc ON i.item_id = bc.item_id