Вывести данные только когда все данные в столбце равны определенному значению

подскажите как лучше организовать такой запрос.

Первая таблица с номерами заказов. Вторая таблица с товарами по этим заказам. Использую соединение по номеру заказа.

select * from orders
  join items on orders.order = items.order

Но беда в том что мне необходимо выводить заказы только те в которых для примера items = 'яблоко'. Например такой заказ я должен пропустить:

 order    item
заказ1   яблоко
заказ1   яблоко
заказ1   апельсин

А этот вывести в запросе

 order    item
заказ2   яблоко
заказ2   яблоко
заказ2   яблоко

Если делаю какой либо фильтр то фильтр отрезает фильтруемую позицию но выводит весь остальной заказ, что не корректно для моей задачи.

Подскажите пожалуйста как это сделать?


Ответы (1 шт):

Автор решения: CrazyElf

Попробуйте что-то такое:

select order from orders
group by order
having count(dictinct item) = 1

Так вы определите номера заказов, в которых один вид item. Дальше можно сделать join обратно с orders и вывести все такие заказы целиком.

→ Ссылка