2010-06-26 59 views
0

我有兩個表,用戶和類。我需要顯示每個用戶的用戶ID和我必須顯示這些用戶以及沒有類的用戶。如何去做..簡單的數據庫查詢

回答

2
SELECT Users.id, Users.username, COUNT(*) AS classes 
    FROM Users 
LEFT OUTER JOIN Classes ON User.fk_class_id = Classes.id 
     GROUP BY Users.id, Users.username 
+0

分組由class.id將返回在大多數數據庫錯誤,因爲users.username不是組通過與沒有被聚合函數 – 2010-06-26 00:53:31

+0

感謝.. .. .. – 2010-06-26 01:03:34

0

我認爲一個子選擇可能是最簡單的方法來實現這一點。

SELECT U.id, numClasses = (SELECT COUNT(1) FROM classes WHERE userID = U.id) 
    FROM Users U 
+0

這相當於到Dex的答案中的LEFT JOIN,儘管Dex的更高效率取決於優化器 – 2010-06-26 00:55:31

+0

你是對的,我沒有按照左外連接的邏輯返回多行來計數,我的菜鳥錯誤部分。出於某種原因,我認爲它會返回每個類的用戶,但它不會。 – staticbeast 2010-06-26 01:04:09

0
select a.user_name, a.user_id, count(b.class_name) 
from user as a 
left join class as b 
on a.class_id = b.id