Исключая записи, основанные на одной ко многому соединению SQL

Как я записал бы SQL-запрос, который исключает запись если одна (внешняя) запись от одного до многих соответствий соединения определенное условие?

Например:

Details
ID      
1         
2         

Items
DetailID    Item
1           A
1           B
2           B
2           C

Как я выбрал бы подробные записи, где Объекты не включают 'A'?

7
задан Paul Ellery 8 April 2010 в 09:30
поделиться

3 ответа

SELECT *
FROM details d
WHERE NOT EXISTS ( 
  SELECT * 
  FROM items i
  WHERE i.DetailID == d.ID 
    AND i.Item = 'A')
6
ответ дан 7 December 2019 в 05:20
поделиться

на основе решения systempuntoout:

SELECT details.*
FROM details 
LEFT OUTER JOIN items ON details.ID=items.DetailID AND items.Item = 'A'
WHERE items.DetailID IS NULL
2
ответ дан 7 December 2019 в 05:20
поделиться

Почему бы просто не использовать INNER JOIN, например:

SELECT details.*
FROM details 
INNER JOIN items ON details.ID=items.DetailID AND items.Item<> 'A'
0
ответ дан 7 December 2019 в 05:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: