SQL проблема, в заказе несколько товаров - PullRequest
0 голосов
/ 13 марта 2020

Проблема SQL, в заказе несколько товаров. Вы хотите запросить всю информацию о заказе, включая продукт a, продукт B и продукт C. Большое спасибо за вашу справочную базу данных: oracle Детали заказа

orderNo  goods 
1001     A
1001    B
1001     C
1001     D
1002    A
1003     A1
1003    B1
1003     C
1003     D
1004    A

………… Как мне найти 1001?

Большое спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вам нужно GROUP BY с HAVING следующим образом:

SELECT ORDERNO
FROM YOUR_TABLE
WHERE
    GOODS IN ( 'A', 'B', 'C')
GROUP BY ORDERNO
HAVING COUNT(DISTINCT GOODS) = 3

Приветствия !!

0 голосов
/ 13 марта 2020

Вы можете использовать агрегацию и фильтровать с помощью предложения having:

select order_no
from order_details
where goods in ('A', 'B', 'C')
group by order_no
having count(*) = 3

Если один и тот же goods может появляться более одного раза для данного order_no, тогда вам нужно having count(distinct goods) = 3 вместо having count(*) = 3.

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