2010-06-26 49 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