2014-02-28 59 views
0

我有我的webapp中的文章,評論和贊。我想用「分數」來排序,這只是喜歡和評論的總和。Postgresql在連接後按順序計數

我試圖做這樣的事情:

SELECT posts.id, COUNT(comments.id) AS c, COUNT(likes.id) AS l 
FROM posts 
LEFT JOIN comments ON posts.id = comments.post_id 
LEFT JOIN likes ON posts.id = likes.post_id 
GROUP BY posts.id 
ORDER BY SUM(c,l) desc; 

,但我得到C列不存在錯誤;

或者這樣:

SELECT posts.id, sum(count(comments.id), count(likes.id)) AS score 
FROM posts 
LEFT JOIN comments ON posts.id = comments.post_id 
LEFT JOIN likes ON posts.id = likes.post_id 
GROUP BY posts.id 
ORDER BY score desc; 

,但我得到的名稱和參數類型的錯誤。

有沒有寫這個查詢,使得它的作品以不同的方式?謝謝!

+0

播種**確切**錯誤。 –

回答

2

你是在大致正確的軌道,但由於某些原因,你試圖用簡單的加法的sum骨料這一翻譯:

SELECT posts.id, count(comments.id) + count(likes.id) AS score 
FROM posts 
LEFT JOIN comments ON posts.id = comments.post_id 
LEFT JOIN likes ON posts.id = likes.post_id 
GROUP BY posts.id 
ORDER BY 2 desc; 

我這裏使用的序位排序順序,即爲了通過第2列。

+0

噢,我正在爲這個做一個'DUH'!這已經有一段時間了,因爲我做了比ActiveRecord = P更多的工作。非常感謝! – deakolt