在Oracle sql中,我有这3个具有名称和列的表:1.orders:
customerid orderid(主键)
2.orderlines:orderlineid(主键)orderid productid
3.产品:产品(主键)类别
并且我想找到至少已下达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);
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
以您的JOINS风格(也是我的最爱)
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句