這是一個常見的最大n-per-group問題,但帶有額外的問題。 我想要的是找到用戶的最新20個帖子,併爲每個帖子加載其最新的5個(或n個)評論。此外,對於分頁需求,我需要知道每個帖子還有多少其他評論。是否有可能找到相同的查詢? (或者至少與所需的低效率查詢)用n條最新評論選擇最新帖子
我現在所做的是找到最新的信息及其評論(全部):
尋找的用戶最新的帖子:
SELECT up.primkey
, up.sender
, up.comment
, up.date
, up.admin_approved
, u.username
, u.avatar
FROM users_posts up
JOIN users u
ON up.sender=u.userkey
WHERE up.sender=?
AND up.admin_approved=0
ORDER
BY primkey DESC LIMIT $from,$to;
然後,我將每個primkey存儲在一個數組中,以便檢索這些帖子的評論。
尋找崗位的評論:
SELECT c.primkey,c.post_id, c.sender, c.comment, c.date, u.username, u.avatar
FROM users_posts_comments c
LEFT JOIN users u ON c.sender=u.userkey
WHERE c.post_id IN('.implode(",", $posts_array).') AND c.`admin_approved`=0
ORDER BY c.primkey DESC;
在那之後,我存儲到一個新的數組($comments[$post_id][]=comment info)
每個註釋,然後我將結果輸出。
我想要的是修改第二個查詢並將評論限制在最近的5個評論中,同時也想知道每個帖子的總評論數是多少以顯示分頁。
這裏有一個小提琴...... sqlfiddle.com/#!2/e92a6/1
預期結果:
post8
post7
comment- 7
評論-6
評論-5
{}頁
post6
...
我知道這將是困難的,所以你會推薦我做(最有效的方式)?
謝謝。
爲什麼不只是做這一切在一個查詢 – Strawberry 2014-11-23 17:06:48
你能提出一些建議嗎? – Manolis 2014-11-23 17:31:45
好吧,如果你願意,可以考慮遵循以下簡單的兩步式操作:1.如果你還沒有這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更容易地複製問題。 2.如果您尚未這樣做,請提供與步驟1中提供的信息相符的所需結果集。 – Strawberry 2014-11-23 17:41:48