Запрос, в котором ВСЕ связанные записи имеют значение атрибута X

У меня есть запрос, который подсчитывает связанные записи и связанный статус

SELECT
  orders.id,
  SUM(CASE WHEN s.shipment_status='CLOSED' THEN 1 ELSE 0 END) as closed,
  COUNT(*) as shipment_count
FROM orders as po
JOIN shipments as s ON s.order_id = po.id 
GROUP BY po.id

Я пытаюсь запросить все заказы, где все поставки CLOSED.

По сути, глядя на вышеизложенное, просто возвращаясь, когда closed = shipment_count .

Если я добавлю в соединение пункт AND, это просто ограничит количество отгрузок.


person Blair Anderson    schedule 11.12.2018    source источник


Ответы (1)


Я понял это с помощью предложения HAVING, которое не использует атрибуты select.

SELECT
  orders.id
FROM orders as po
JOIN shipments as s ON s.order_id = po.id
GROUP BY po.id
HAVING SUM(CASE WHEN s.shipment_status='CLOSED' THEN 1 ELSE 0 END) = COUNT(*)

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

person Blair Anderson    schedule 11.12.2018