2012-09-04 64 views
1

我有關於每個用戶的信息的表users。那麼該表posts有關的文章,最後表user_posts信息,其中包含以下幾列:如何獲取每個用戶的所有帖子?

user_id 
post_id 
... 

我試圖獲得與崗位的最高計數的用戶的圖表。我做了這個查詢:

選擇u.id如UID,作爲u.name UNAME, 計數(up.id)作爲up_count 從用戶爲u JOIN user_posts高達ON up.user_id = u.id ORDER BY vcount DESC LIMIT 25

該查詢返回我只有一個用戶和所有行的表中的user_posts總數。

我在做什麼錯?我需要獲取按發佈每個用戶的文章數排序的25位用戶的列表。

預先感謝您

+0

試試左加入代替加入 – Wearybands

回答

3

您的查詢需要有GROUP BY子句,因爲你已經使用COUNT()功能。

SELECT u.id as uid, 
     u.name as uname, 
     count(up.id) as up_count 
FROM  users as u 
      LEFT JOIN user_posts as up 
       ON up.user_id = u.id 
GROUP BY u.id, u.name 
ORDER BY up_count DESC LIMIT 25 

必須通過ID已分組它們,否則你將所有記錄單總數的結果。還有一件事,使用LEFT JOIN,即使沒有帖子的用戶仍然可以看到你的結果,得分爲0

+0

這更好:) – James

+0

@James它認爲OP的意思是'up_count' – Pedigree

1
SELECT 
    u.id as uid, u.name as uname, count(up.id) as up_count 
FROM users as u 
    JOIN user_posts as up ON up.user_id = u.id 
GROUP BY 
    u.id, u.name 
ORDER BY 
    vcount 
DESC LIMIT 25 
+0

謝謝! – user984621

相關問題