Oracle SQL - проблема отображения с использованием внешнего ключа - PullRequest
1 голос
/ 24 мая 2011

Я пытаюсь отобразить все продукты, показывающие даты их продажи, а также все продукты, которые еще не были проданы.

У меня есть две таблицы: Products и Sales.Имена столбцов:

Продукты

  • prod_id
  • имя_продукта

Продажи

  • prod_id
  • date_of_sale

Две таблицы связаны с помощью столбца prod_id, но я просто не могу отобразить продукты, которые не были проданы, а также продукты с продажами.

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Я думаю, вам нужно использовать левое внешнее соединение между продуктами и продажами:

SELECT p.PROD_ID, p.PRODUCT_NAME, s.DATE_OF_SALE
  FROM PRODUCTS p
  LEFT OUTER JOIN (SELECT DISTINCT PROD_ID, DATE_OF_SALE
                     FROM SALES) s
    ON (s.PROD_ID = p.PROD_ID)

Не могу играть с ним в данный момент, но я думаю, что должно получить то, что вы хотите. Вы должны получить все PROD_ID и PRODUCT_NAME от PRODUCTS и все DATE_OF_SALE от SALES. Если для продукта нет DATE_OF_SALE, вы все равно должны увидеть его.

Делись и наслаждайся.

1 голос
/ 24 мая 2011
SELECT p.prod_id, p.product_name, s.date_of_sale
FROM  products p
   ,  sales    s
WHERE s.prod_id(+) = p.prod_id  
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...