Данные листинга с присоединением SQL - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующий вопрос, связанный с объединением таблиц в SQL:

Список всех products, которые не были проданы на 13.05.2003. С учетом таблиц Orders, LineItem и Product. enter image description here

Я закодировал следующее:

SELECT p.Pid, p.Label
 from Product p natural join line_item l
natural join Orders
where Date <> "2003-05-13"

Проблема в том, что когда я выполняю этот код, появляется больше данных, чем должно быть, и Не знаю, как избавиться от дубликатов с помощью join.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 23 июня 2020

В конце я попробовал следующее, и это сработало:

select product.pid, product.label
from ((product  inner join line_item on product.pid = line_item.pid) inner join orders on orders.oid = line_item.oid)
where not orders.date ='2003-05-13'
group by product.pid;

Большое спасибо за ваши ответы, они помогли мне найти правильный путь для его решения

0 голосов
/ 17 июня 2020

Безопаснее использовать NOT EXISTS. Например:

select *
from product p
where not exists (
  select null 
  from lineitem i
  join orders o on o.oid = l.oid and l.pid = p.pid
  where date <> "2003-05-13"
)

Или вы можете использовать NOT IN:

select *
from product 
where pid not in (
  select l.pid
  from lineitem i
  join orders o on o.oid = l.oid
  where date <> "2003-05-13"
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...