2017-06-15 72 views
1

所以我有兩個表:返回次數的ID重複

訂單

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 

任何幫助,非常感謝! :)

回答

3

您缺少GROUP BY語句。如果你在最後加入

GROUP BY users.user_id 

它應該糾正你的問題。

有關SQL語句的更多幫助,嘗試http://www.dofactory.com/sql/tutorial

+0

謝謝,我不能相信我沒想到這越快。 –

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 
... 
+0

謝謝,我不敢相信我沒有早點想到這一點。 –