带连接的SQL计数

时间:2015-09-24 08:27:24

标签: sql oracle

select product_name, product_order.Count(*)
From product Join product_order
ON product.product_id = product_order.product_id
where product.product_id = product_order.product_id;

我一直在研究这个查询一个小时,似乎无法让它工作。我需要做的就是将一个表中的产品与另一个表中的产品匹配。然后在一列中显示产品以及在下一列中订购产品的次数。

2 个答案:

答案 0 :(得分:1)

这应该简单如下:

  select product_name,
         count(product_order.product_id)
    From product left join product_order
      on product.product_id = product_order.product_id
group by product_name

我使用左连接并依靠product_order.product_id计算,因此仍然会显示尚未订购的产品,计数为零。

答案 1 :(得分:0)

我就是这样做的:

select p.product_name,
       (select count(*) from product_order po where p.product_id = po.product_id) times_ordered
from   product p

或者,您可以使用group by语句:

select p.product_name,
       count(po.product_id)
from   product p,
       product_order po
where  p.product_id = po.product_id(+)
group by p.product_name