У меня есть две таблицы.Левое соединение, когда есть множество совпадающих строк из правого стола
Product(id, name)
LineItem(id, product_id, order_id)
Order(id, state)
У заказа может быть много продуктов. Один продукт может принадлежать множеству заказов одновременно.
Я хотел бы выбрать Продукты, у которых нет заказов со специфическими статусами (то есть 1, 2).
Мой запрос
SELECT products.id, products.price
FROM "products"
LEFT OUTER JOIN line_items ON line_items.product_id = products.id
LEFT OUTER JOIN orders ON orders.id = line_items.order_id AND orders.status IN (1, 2)
WHERE (products.price > 0) AND (orders.id IS NULL) AND "products"."id" = $1
GROUP BY products.id, products.price [["id", 11]]
11 представляет собой идентификатор продукта, который не должен появляться в результате, но это делает.
Отправьте запрос. Будет полезно вести вас –
Я удалил посторонние теги базы данных. Пожалуйста, отметьте вопрос в базе данных, которую вы действительно используете. –
Джим, я разместил его. Пожалуйста, просмотрите –