微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过 SQL 选择

如何解决通过 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 举报,一经查实,本站将立刻删除。