2016-03-25 35 views
0

我目前正在編寫一個小博客腳本。有2代表在我的數據庫:搜索最新評論的PHP/MySQL解決方案

posts & comments 

現在我要展示最新的10條評論一樣:

post 1 "do that" (last updated by a user comment) 
post 2 "test" (*) 
post 3 "hello" (*) 

我不想表現的評論,我只想表明誰是職位最後由用戶評論更新。也沒有雙重輸出。

表結構:

posts: id, date, title 
comments: id, time, content 

實際上可以不知道如何解決。 謝謝!

+0

你想按最後用戶評論排序,而不是發佈日期? – rvbarreto

+0

你的桌子的結構是什麼? –

+0

@rvbarreto是的,我希望它按最後用戶評論排序 – j0hn

回答

0

你應該學會基本的SQL ... 你需要一個SELECT在這裏的講話:

SELECT DISTINCT p.id, p.date, p.title 
FROM comments c 
INNER JOIN posts p ON (p.id = c.post_id) 
ORDER BY c.time DESC 
LIMIT 10 
0

如果你什麼在posts表,以便它通過數據comments表中查詢數據,您需要一個JOIN

SELECT DISTINCT * FROM posts 
INNER JOIN comments ON posts.post_id = commnents.post_id 
GROUP BY posts.posts_id ORDER BY comments.comment_id DESC; 

我正在考慮comments.comment_id是一個自動增量字段,這種方式的DESC排序將顯示最後添加的評論。此代碼將選擇您的信息表中的所有數據,但會顯示最後一條註冊的註冊信息。如果你願意,你可以在查詢結束時限制添加LIMIT 3

+0

是的,它是自動增量 – j0hn

+0

如果用戶可以更新他們的評論,自動增量不起作用=>按時間排序 – Rocki

+0

@Rocki是正確的。如果有「更新時間」字段,則應按此順序排列。 – rvbarreto

0
SELECT p.* FROM posts p INNER JOIN comments c ON p.id = c.post GROUP BY p.id ORDER BY MAX(c.id) DESC 

是解決方案。