SQL Какой элемент не содержит отношения n2m с X - PullRequest
1 голос
/ 24 мая 2011

У меня есть отношение n к m в SQL, например:

Таблица A:

Id
 1
 2
 3

Таблица B:

Id  
 1    
 2
 3

Таблица отношений AB:

Id_A  Id_B
 1      1
 1      3
 2      3

Это означает, что объект в таблице A с Id 1 связан с объектом в таблице B с Id 1, также A: 1 с B: 3 и A: 2 с B: 3.

Теперь я пытаюсь получить все идентификаторы из таблицы A, которые не связаны с B: 1. Это должно вернуть A: 2 и A: 3.

Как мне это сделать?

1 Ответ

2 голосов
/ 24 мая 2011
SELECT id
FROM TableA
EXCEPT
SELECT Id_A
FROM TableAB
WHERE Id_B=1

Или (Если вам нужны дополнительные столбцы из таблицы А, не показаны)

SELECT a.id /*,a.foo, a.bar*/
FROM TableA a
WHERE NOT EXISTS(SELECT * 
                 FROM TableAB ab 
                 WHERE ab.Id_B=1 AND ab.Id_A=a.Id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...