2013-04-15 47 views
0

我當前實現以下查詢以獲取數據庫中與用戶具有特定興趣標籤的所有帖子,並通過發佈時間對這些帖子進行排序。我現在的查詢功能非常完美。不過,我正在計劃一個排序工具,讓用戶按分數排序(按喜歡或不喜歡的方式計算)。更改我的MySQL查詢以實現排序

SELECT DISTINCT p.* FROM posts AS p 
    INNER JOIN post_tag AS posttag ON p.post_id = posttag.post_id 
    INNER JOIN profile_tag AS profiletag ON posttag.tag_id = profiletag.tag_id 
    INNER JOIN profile AS profile ON profile.profile_id = profiletag.profile_id 
WHERE  profile.username = 'username' 
ORDER BY time_posted DESC 

現在,喜歡在表中舉行的「喜歡」與列:

post_id | score 

因此,當一個用戶的分數後,該post_idscore被添加到該表,因此不是每個職位都會有一個分數。我堅持要採取哪些步驟來實現按分數對帖子進行排序的能力。

沒有得分阿交將爲0

編輯:

一個例子:

post_id|score 
    1  1 
    1  1 
    2  1 

所以柱1具有總共2個喜歡和後有1個,所以它會根據每篇文章的總和進行排序。

回答

1

你應該可以只是INNER JOIN的表中沒有添加任何東西到SELECT語句。然後,你可以排序是:

SELECT DISTINCT p.* FROM posts AS p 
    INNER JOIN post_tag AS posttag ON p.post_id = posttag.post_id 
    INNER JOIN profile_tag AS profiletag ON posttag.tag_id = profiletag.tag_id 
    INNER JOIN profile AS profile ON profile.profile_id = profiletag.profile_id 
    INNER JOIN Likes AS l ON l.post_id = p.post_id 
WHERE  profile.username = 'username' 
ORDER BY l.score, time_posted DESC 
+0

這是有用的,但請參閱我的編輯 – rp7

+0

然後嘗試通過計數(得分) – Lawson

+0

我想這不過似乎只顯示一個帖子的結果排序?這是我改變了:'ORDER BY count(l.score)DESC' – rp7