SQL исключая через Join - PullRequest
       1

SQL исключая через Join

2 голосов
/ 24 января 2011

Это может быть довольно просто, но мне трудно это обернуть.

По сути, у меня есть 2 таблицы, а и б. «b» содержит список всех возможных элементов, а «a» содержит строку, которая ссылается на элемент в «b», а также родительский номер. то есть, чтобы отобразить строки в a с их информацией, я делаю что-то вроде этого:

select a.field1, a.field2, b.description
from a inner join b on a.itemid = b.itemid
where a.parentnumber = @parentnumber

Такого рода вещи работают, sfine. Но я также хочу, чтобы в раскрывающемся списке отображались все элементы, которые не перечислены для этой родительской учетной записи в. Как бы я это сделал?

Ответы [ 2 ]

9 голосов
/ 24 января 2011
SELECT  *
FROM    b
WHERE   itemid NOT IN
        (
        SELECT  itemid
        FROM    a
        WHERE   a.parentnumber = @parentnumber
        )
1 голос
/ 21 ноября 2013

Используя левое соединение с этим подзапросом, вы можете задать псевдоним и использовать этот псевдоним для проверки нуля. Я предпочитаю такой подход, потому что псевдоним, который содержит результаты подзапроса, может использоваться во всем запросе.

SELECT *
FROM b

LEFT JOIN
(
SELECT itemid
FROM   a
Where  a.parentnumber = @parentnumber
) As Sub On b.itemid = sub.itemid

WHERE sub.itemid IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...