У меня есть индексная таблица «многие ко многим», и я хочу выполнить для нее запрос типа include / exclude.
fid на самом деле является целочисленным индексом, но здесь в качестве букв для облегчения понимания. Вот пример таблицы:
таблица т
eid | fid
----+----
1 | A
1 | B
1 | C
2 | B
2 | C
3 | A
3 | C
4 | A
4 | B
5 | B
Вот несколько примеров запросов, которые я хочу.
- Какие eids имеют FID B, а НЕ A? (Ответ 2 и 5)
- Какие eids имеют FID C, а НЕ A? (Ответ еид 2)
Кажется, я не могу понять запрос, который сделает это.
Я пытался самостоятельно присоединиться, как это:
select *
from t as t1
join t as t2
where t1.eid=t2.eid
and t1.fid!=t2.fid
and t1.fid=B and t2.fid!=A
Это не сработает, потому что все равно будет возвращать строки, где eid = 1 и fid = C.
Понятно ли, что я хочу?