2012-09-13 118 views
0

這裏是我的表的安排:中級MySQL查詢 - 連接兩個表一起,限制結果

Posts 
    post_id 
    post_votes 

Comments 
    comment_id 
    post_id 
    comment_time 

我沒能創建一個查詢,執行以下操作:

  1. 選擇10個帖子排序方式post_votes desc
  2. 雖然每個帖子得到5條評論

我會發布我嘗試過的,如果有必要的。 我剛剛進入更復雜的查詢,任何幫助或建議,非常感謝

+0

既然是PHP,你應該嵌套查詢。不需要爲任務使用'JOIN'。 – hjpotter92

+0

你爲什麼要在PHP中嵌套查詢而不是加入?這似乎很落後。 –

+0

我想我需要使用JOIN,但我不確定如何爲每個「Post」獲取多個註釋。你知道這些類型的查詢有什麼好的資源嗎? – TaylorMac

回答

2

下面將檢索10通過desc和5評論順序desc分別命令。

select post_id,post_votes,comment_id,comment_time, 
@rn := CASE WHEN @prev_post_id = post_id THEN @rn + 1 ELSE 1 END AS rn, 
     @prev_post_id := post_id from 
    (select p.post_id,post_votes,comment_id,comment_time from 
    (SELECT post_id,post_votes from posts order by post_votes desc limit 10) p 
    left outer join 
    comments c on p.post_id=c.post_id order by post_id,comment_time desc)m 
having rn<=5 

SQL FIDDLE HERE(由降序檢索3後順序的測試樣品和分別還2徵求意見每個柱)。

+0

哇我有很多要了解查詢。我會測試一下,謝謝你的時間和專業知識 – TaylorMac