2010-12-15 128 views
1

我有2個表MySQL的左連接問題

Table: Users 
     userid (int, PK) 
     name (varchar) 
     type (enum) 

Table: Sales 
     salesid (int) 
     productid (int) 
     userid (int, FK) 

我需要輸出作爲

User Name         Sales Count 
    ABC           5 
    BCD           0 
    EFG           1 

我需要所有從與特定類型的 「用戶」 表中的用戶(如,B,C)銷售數量(如果沒有銷售,那麼0)

SELECT users.name 
     , count(sales.salesid) 
FROM users 
    LEFT JOIN sales 
    ON users.userid = sales.userid 
WHERE type = 'a' 

上面查詢的問題在於,這只是顯示我那些用戶公頃已經銷售,我需要所有與特定類型的用戶,他們是否有銷售或不

感謝

+2

左側加入看起來正確。缺失行的類型是不等於'a'的嗎? – 2010-12-15 07:36:18

+0

@bernd_k:行有類型'a'但他們仍然丟失 – 2010-12-15 07:38:07

回答

2

你不缺少GROUP BY子句?對於大多數SQL語言,你需要它,而且在我使用的MySQL(確實比較老)的MySQL中,它必須在那裏,否則你會得到一個錯誤。最後加上「GROUP BY users.name」,它應該可以工作。

+0

謝謝,它的工作 – 2010-12-15 07:51:06

1

嘗試:

SELECT users.name, count(sales.salesid) 
FROM users 
    LEFT JOIN sales 
    ON (users.userid = sales.userid AND type = 'a') 
+0

不,如果你在連接條件中加入類型檢查,這將保持其他類型的用戶不是'a 」。 – 2010-12-15 07:51:39