2012-07-19 71 views
2

我有2个表,用户和文件。
用户拥有(id,name),
文件有(id,user_id,路径)。
我需要为用户显示表格和每个用户上传文件的数量。SQL查询从2个表中获取数据

回答

6

使用LEFT JOINGROUP BYCOUNT如下:

SELECT Users.name, COUNT(Files.id) AS files_count 
FROM Users 
LEFT JOIN Files 
ON Users.id = Files.user_id 
GROUP BY Users.name 
+0

谢谢。 “SELECT Users.name,(SELECT count(Files.id)FROM Files WHERE Files.user_id = Users.id)作为Total Uploads FROM Users”看起来像它也可以工作,第二个问题将LEFT JOIN更好地使用? – 2012-07-19 11:54:55

+0

大概差别不大。如果您希望在将来添加更多列(例如,文件总大小等),则可能会有所帮助 - 那么LEFT JOIN会更方便。 – 2012-07-19 12:15:43

1
select 
    u.id,u.name,count(f.id) as counting 
from 
    users as u inner join files as f on u.id=f.user_id 
group by 
     u.id,u.name 
+2

这个答案和我的区别在于,这个不会包含没有文件的用户,因为你使用INNER JOIN而不是LEFT JOIN。 – 2012-07-19 11:27:54