所以我有两张桌子:
订单
order_id | user_id
1 | 1
2 | 1
3 | 1
4 | 2
5 | 2
用户
user_id | name
1 | John
2 | Mike
我想要返回id,客户名称以及他已下达的订单数量。像这样:
user_id | name | num_orders
1 | John | 3
2 | Mike | 2
我尝试执行以下查询,但它只返回第一个用户的名称和订单总数。这是我的查询:
SELECT
users.user_id,
users.name,
COUNT(orders.order_id) AS num_orders
FROM users
LEFT JOIN orders
ON users.user_id = orders.user_id
ORDER BY users.user_id DESC
非常感谢任何帮助! :)
答案 0 :(得分:3)
您缺少GROUP BY语句。如果你在最后加入
GROUP BY users.user_id
它应该纠正你的问题。
有关SQL语句的更多帮助,请尝试http://www.dofactory.com/sql/tutorial
答案 1 :(得分:2)
您正在寻找的是GROUP BY
条款。 它与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以按一列或多列对结果进行分组。下面是它的工作原理。
SELECT
users.name,
users.user_id,
count(users.user_id) as total
FROM users
LEFT JOIN orders ON users.user_id = orders.user_id
GROUP BY users.user_id
ORDER BY users.user_id DESC
结果:
username |user_id | total
John | 3 | 3
Mary | 2 | 5
Carl | 1 | 1
...