【问题标题】:oracle sql developer query for 3 tablesoracle sql developer查询3个表
【发布时间】:2014-02-05 17:44:09
【问题描述】:

在 oracle sql 中,我有这 3 个带有名称和列的表: 1.订单:
客户ID orderid(主键)

2.orderlines: orderlineid(主键) 订单号 产品编号

3.产品: prodid(主键) 类别

我想找到至少有 1 个订单的客户(customerid),其中包含至少 3 个不同类别的产品。如果有人可以帮助我进行此查询。非常感谢!

尝试了很多东西,但没有任何效果,因为我是 SQL 的新手,这里是一个例子,因为我不知道我真正在做什么,所以不要给予太多关注。再次感谢。

select customerid,count(orderid) as total
from (select customerid,orderid,prodid,distinct category
from orders o,orderlines n,products p
where o.orderid=n.orderid and n.prodid=p.prodid )
group by (customerid);

【问题讨论】:

    标签: sql oracle


    【解决方案1】:
    SELECT DISTINCT customerid 
    FROM ORDERS O
    INNER JOIN PRODUCTS P
    ON (P.prodid = O.prodid)
    INNER JOIN ORDERLINES OL
    ON (O.prodid = OL.prodid AND O.orderid = P.orderid)
    GROUP BY O.customerid,O.orderid
    HAVING
    COUNT(DISTINCT p.category) >= 3
    

    以你的方式加入(我也最喜欢)

    SELECT DISTINCT customerid 
    FROM ORDERS O,PRODUCTS P,ORDERLINES OL
    WHERE (O.prodid = P.prodid)
    AND (O.prodid = OL.prodid AND O.orderid = P.orderid)
    GROUP BY O.customerid,O.orderid
    HAVING COUNT(DISTINCT p.category) >= 3
    

    【讨论】:

      猜你喜欢
      • 2013-06-20
      • 2021-04-12
      • 2021-03-31
      • 2012-12-30
      • 2012-06-14
      • 2013-02-10
      • 2022-10-13
      • 2023-04-07
      • 1970-01-01
      相关资源
      最近更新 更多