如何解决通过 SQL 选择
我正在尝试创建包含六种特定产品的所有订单的列表。我正在使用的当前查询是:
SELECT o.order_date,o.price AS revenue,o.cost,f.id AS fileid,o.id AS orderid,o.fk_order_status_id,o.date_started,o.date_completed,p.description AS product,pp.description AS subproduct
FROM orders o
JOIN file f
f.id = o.fk_file_id
JOIN product p
ON p.id = o.fk_product_id
JOIN product_product pp
ON pp.fk_product_id = o.fk_product_id
WHERE o.fk_product_id IN ('66','8','6','21','11')
这会提取包含任何这些产品的所有订单。我需要缩小结果的范围是包含这些产品的订单,而不仅仅是一两个产品。我们正在尝试获取我们最近实施的工作流程的计数
解决方法
您可以使用聚合和having
:
SELECT o.order_date,o.price AS revenue,o.cost,o.id AS orderid,o.fk_order_status_id,o.date_started,o.date_completed
FROM orders o JOIN
file f
ON f.id = o.fk_file_id JOIN
product p
ON p.id = o.fk_product_id JOIn
product_product pp
ON pp.fk_product_id = o.fk_product_id
WHERE o.fk_product_id IN (66,8,6,21,11)
GROUP BY o.order_date,o.price,o.id,o.date_completed
HAVING COUNT(DISTINCT o.fk_product_id) = 5; -- number of products in the list
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。