Я бы хотел создать запрос SQLite, который выяснит, съел ли человек с определенным person_id
Fruit
'apple'
, но не фрукт 'banana'
. У меня есть доступ к таблице Fruit
, которая содержит информацию о том, кто съел какой тип фруктов. Затем я хотел бы использовать эту информацию для SELECT
фамилии человека, который съел apple
с, но не banana
с подзапросом. На мой взгляд, это будет go примерно так:
SELECT
P.last_name
FROM
Person AS P
WHERE
P.pid IN (
SELECT
F1.pid
FROM
Fruit AS F1,
Fruit AS F2
WHERE
F1.pid = F2.pid
AND F1.type = 'apple'
AND F2.type <> 'banana'
)
ORDER BY P.pid;
Однако это не достаточно строгое условие, так как теперь я допускаю тот же тип фруктов в F2
, что и в F1
, который все еще позволил бы выбрать этого человека. С другой стороны, я не могу ограничить это слишком сильно, например, с помощью
F1.type <> F2.type
в подзапросе, так как это исключит законных лиц из SELECT
ed.
Каким должно быть ограничение, чтобы эта работа работала?