2012-07-19 69 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