2016-01-22 135 views
0

我有2個簡單的表格,如客戶和訂單,客戶可以有0到n個訂單。我想有一個像這樣的列表: 10個客戶提出了0個訂單 4個客戶提出了1個訂單 5個客戶提出了2個訂單 2個客戶提出了3個訂單 ...等等。到目前爲止,我有:mysql:列出所有客戶訂單的數量

SELECT customers.id FROM customers 
LEFT JOIN orders ON orders.customerId = customers.id 
HAVING COUNT(orders.id) = 1; 

其中列出所有客戶誰做了1訂單,但正如我所說我需要一個列表與所有財產。

+0

'用戶'是什麼? – Strawberry

+0

對不起:用戶是客戶。 – Werner

+0

請編輯你的問題 – Strawberry

回答

1
SELECT COUNT(*), t.orderCount 
FROM 
(
    SELECT u.id, COUNT(o.id) AS orderCount 
    FROM users u LEFT JOIN orders o 
     ON u.id = o.userId 
    GROUP BY u.id 
) t 
GROUP BY t.orderCount 

內部查詢將給予每個用戶和他的訂單總額:

user total 
    1 2 
    2 3 
    3 2 
    4 3 

外部查詢做了GROUP BY這個總數來統計分享總數的客戶數:

# customers total 
    2   2 
    2   3 
0

可以使用聚合函數和組卜

SELECT ifnull(count(orders.id),0), users.id FROM users 
LEFT JOIN orders ON orders.userId = users.id 
group by users.id 
相關問題