在文本中查询:“显示所有活动用户及其输入的已完成订单+指定日期范围内已分配的已完成订单”。
这是我设法只用一次计数创建的查询
SELECT u.firstname, u.lastname, COUNT(l.id) AS totalCompleted
FROM users u
LEFT JOIN orders l
ON l.idDispatcher = u.id
WHERE u.disabled = '0'
AND l.smallStatus='1'
AND l.dateAdded >= :from
AND l.dateAdded <= :to
GROUP BY u.firstname;
这为我提供了用户被分配到订单的所有订单:
LEFT JOIN orders l
ON l.idDispatcher = u.id
我需要将此查询与COUNT(l.id)
基于的另一个查询结合起来:
LEFT JOIN orders l
ON l.addedById= u.id
当我尝试这个时:
LEFT JOIN orders l
ON l.idDispatcher = u.id AND l.addedById= u.id
COUNT(l.id)
结合了分配的订单和用户添加的订单的结果,当我需要它有两个不同的数字时。我也尝试在COUNT中添加条件,但没有成功
答案 0 :(得分:0)
我不确定我是否完全理解,但如果你说你让它使用两个单独的查询,你需要两个计数,那么只需将结果合并在一起吗?
但是,如果您需要根据两个不同的条件对所有匹配进行一次计数,请在您的联接中使用“OR”而不是“AND”:
SELECT u.firstname, u.lastname, COUNT(l.id) AS totalCompleted
FROM users u
LEFT JOIN orders l
ON l.idDispatcher = u.id
or l.addedById= u.id
WHERE u.disabled = '0'
AND l.smallStatus='1'
AND l.dateAdded >= :from
AND l.dateAdded <= :to
GROUP BY u.firstname, u.lastname;