2010-05-25 29 views
1

假設您有一個用戶表和一個引用用戶(用戶has_many的訂單)幷包含一個物料計數字段的訂單表。可能使用group_by的計數總數

你怎麼能有效地問「多少用途訂購了多少項目?」

也就是說,產生沿着線的東西:

Number of users | sum of items 
------------------------------- 
5 users   | 1 item 
4 users   | 5 items 
1 user   | 7 items 

在此先感謝。

+0

訂購表不一般包含項目信息。通常是一個orderDetails表,它具有OrderId,ItemNumber(ItemId)unitPrice和ItemCount ...或類似的東西。你確定你不是在討論OrderDetails表嗎? – 2010-05-25 19:44:06

+0

實際的問題涉及安裝記錄和登錄計數,並且用戶可以安裝許多iPhone應用程序。以用戶和訂單的形式表達它的含義,因爲這只是將問題的核心視爲可視化的一種常見方式。 – 2010-05-25 20:51:37

回答

1

您需要使用派生表:

SELECT COUNT(*) AS `Number of Users`, `Sum of Items` 
FROM (
    SELECT u.UserID, SUM(ItemCount) AS `Sum of Items` 
    FROM User u 
    INNER JOIN Order o ON u.UserID = o.UserID 
    GROUP BY u.UserID 
) g 
GROUP BY `Sum of Items` 
+0

完美,這正是我所期待的。 – 2010-05-25 19:42:08

+1

這裏用戶表是不必要的。 – msi77 2010-05-25 19:55:38

+0

@ msi77:是的,真的! – 2010-05-25 20:31:19