Php 左联接计数忽略计数中的左表列
我有两个表…第一个表有Php 左联接计数忽略计数中的左表列,php,mysql,database,Php,Mysql,Database,我有两个表…第一个表有order\u id,order\u status,和user\u id。。。。第二个表有订单id,和产品id,产品数量,如下所示 第一桌 order_id | order_status | user_id ---------------------------- 1 | 5 | 2 2 | 1 | 1 3 | 5 | 1
order\u id
,order\u status
,和user\u id
。。。。第二个表有订单id
,和产品id
,产品数量
,如下所示
第一桌
order_id | order_status | user_id
----------------------------
1 | 5 | 2
2 | 1 | 1
3 | 5 | 1
4 | 5 | 1
第二张桌子
order_id | product_id | quantity
----------------------------
1 | 200 | 4
2 | 201 | 2
2 | 200 | 1
2 | 207 | 4
3 | 201 | 1
3 | 200 | 6
4 | 201 | 8
我想去
user_id | Total_orders | quantity
----------------------------
1 | 2 | 15
2 | 1 | 4
获取用户标识,其中订单状态=5,按用户标识分组求和(数量)
我的尝试
SELECT h.user_id
, COUNT(IF(h.order_status = 5,1,0)) AS total_orders
, SUM(o.quantity) AS quantity
FROM table1 h
LEFT
JOIN table2 o
ON o.order_id = h.order_id
WHERE h.order_status = 5
GROUP
BY h.user_id
但是,它给出了计算左表中order_id的所有实例的结果,如。。。状态为5的用户id 1的订单总数为2,但我的查询返回3作为计数(订单id
)bcz有3个用户id 1传递的订单实例
任何建议或解决方案…我被困很久了:(
谢谢您需要计算订单id的不同出现次数:
SELECT h.user_id,
COUNT(DISTINCT h.order_id) AS total_orders,
SUM(o.quantity) AS quantity
FROM table1 h
LEFT JOIN table2 o ON o.order_id=h.order_id
WHERE h.order_status = 5
GROUP BY h.user_id
另外,在COUNT
中使用IF
函数,如下所示:
COUNT(IF(h.order_status = 5,1,0)) AS total_orders
由于WHERE
子句,订单状态始终等于5,因此没有意义:
WHERE h.order_status = 5