2011-09-12 40 views
0

目前我正在運行一個查詢來獲取用戶的所有帖子,然後在這個循環中,我正在查詢該帖子的最新3條評論。超低效;我一遍又一遍地查詢每一篇文章。

我想合併我的查詢,以便我只查詢所有帖子一次,並且只查看一次這些帖子的所有評論。目前,我有一個逗號分隔的列表,我爲這個用戶的所有職位方面(例如,「1,5,18,9」)
最近有3人對帖子列表發表評論

posts表:

  • posts .ID
  • posts .userid

comments表:

  • comments .ID
  • comments .relid(這是帖子ID)
  • comments .userid

查詢應使用$ posts_list我有,這是逗號分隔的帖子列表。或者爲這個用戶的所有帖子選擇一個子查詢,但這似乎是低效率的,因爲我已經有一個字符串的帖子列表。

非常感謝您的幫助!

+2

我們可以看到一些代碼嗎? –

+1

爲了更好的回答,你也可以包含你當前的腳本。所以人們可以確定循環順序。但是,可能沒有必要。只是檢查,如果你正在獲得質量答案:) –

回答

2

嘗試此查詢 -

SELECT p.id, p.userid, c.id, c.userid 
    FROM posts p 
    JOIN (
    SELECT c1.*, COUNT(*) rank FROM comments c1 
    LEFT JOIN comments c2 
     ON c2.relid = c1.relid AND c2.id <= c1.id 
    GROUP BY c1.relid, c1.id 
    ) c 
    ON p.id = c.relid 
WHERE rank < 4 

並添加您需要的條件,即 - 在p.userid IN(1,5,18,9)。

+0

非常感謝你! – Ryan

相關問題