У меня есть две таблицы, A и B:
A.id
A.name
B.id
B.A_id <-- points to A in a many to one relationship
B.tag <-- predefined integer
Мне нужно объединить две таблицы так, чтобы:
SELECT A.name, B.name, B.tag FROM A INNER JOIN B ON A.id = B.a_id
WHERE (B.tag IN (1,2,3) AND B.tag NOT IN (4,5)
, и полученный результат должен быть таким, чтобы он былвернуть все возвращенные A и B только в 1, 2, 3 и NOT IN 4, 5 .
Если любое из возвращенных объединений A содержит B.тег с исключенным тегом, поэтому мы не должны видеть его возвращаемым, даже если существует соединение A с действительным тегом B.
т.е.
A.name = 'Bob'
A.id = 1
B.id = 1
B.A_id = 1
B.tag = 10
B.id = 2
B.A_id = 1
B.tag = 11
B.id = 3
B.A_id = 1
B.tag = 12
Когда мы выполняемquery:
SELECT A.id, B.id, B.tag FROM A INNER JOIN B ON A.id = B.a_id
WHERE (B.tag IN (10) AND B.tag NOT IN (11)
Это НЕ вернет ничего, поскольку у нас есть исключение NOT IN (11)
.Возможно ли это сделать?