网站销售带有定价计划的虚拟服务,这是数据库结构......项目是实际服务,产品是定价计划(如专业,商业,经销商等)。
问题是要计算所有项目的总订单数,但是在order_products表中我只保留产品,所以通过product_id进行分组的简单连接我认为对于这种情况不起作用。我在stackoverflow中看到很多问题,人们只计算产品,但我怎样才能计算项目订单。我可以在业务逻辑部分用PHP做这件事,因为我认为我能够获得产品订单数,但我想知道是否有可能使用MySQL计算项目订单
我很抱歉截图中有黑框,这些是公司名称。 这就是我尝试获取产品订单的方式。
SELECT
p.name,
COUNT(*) AS db
FROM order_products AS op
LEFT JOIN orders AS o ON op.order_id= o.id
INNER JOIN products AS p ON p.id = op.product_id
GROUP BY op.product_id
ORDER BY COUNT(op.id) DESC
P.S。项目< - >产品关系是多对多的,但在业务逻辑中它是一对多的,所以我们可以假设每个产品只属于一个项目。
答案 0 :(得分:2)
由于订单表中没有数量字段,您只需要一个简单的连接:
select pp.project_id, count(*) as project_order_count
from project_product as pp
inner join order_products as op
on op.product_id = pp.product_id
inner join orders as o
on o.id = op.order_id
where o.some_date between '01/12/2017' and '03/10/2017'
group by pp.project_id