2013-04-22 111 views
0

似乎無法找到一個好的答案。我目前有兩張桌子,一張有Facebook貼子,另一張有評論。除了這個,我現在需要添加回復,因爲FB最近做了這個。Mysql - 正確訂購Facebook帖子,評論和回覆

我當前的查詢從帖子和連接中選擇評論。我希望爲答覆做的是在評論中添加另一個條目,但帶有一個家長ID。無論查詢我最終,我想結果是這樣的:

postID commentID parentID 
1 
2  1 
2  2   1 
2  3   1 
3  4 

所以張貼1有沒有意見,後2有兩條回覆到評論一個評論,張貼3只有一個評論。在我的評論表中,評論1-4是同一個表中的所有單獨條目。無論如何,只需一個查詢就可以做到這一點,而不必再進行評論表的加入。

編輯當前查詢。此查詢不處理回覆,僅用於帖子和一級評論。

select facebookFeeds.*, facebookComments.userID, facebookComments.name, facebookComments.message as cMessage, facebookComments.createdTime as cCreatedTime from facebookFeeds left join facebookComments on facebookFeeds.id = facebookComments.feedID where facebookComments.accountID= 24 order by createdTime desc 
+1

什麼是您正在使用的當前查詢? – 2013-04-22 21:30:42

+0

答覆在評論表或他們自己的另一個表中? – koriander 2013-04-22 22:24:06

+0

我很困惑。不是像這樣簡單的'LEFT JOIN'工作:'SELECT * FROM posts p LEFT JOIN comments c ON p.postID = c.postID'? – lunr 2013-04-22 23:00:25

回答

0

我想通了,讓它工作使用如果在順序條款。唯一的缺點是,父註釋ID必須小於其答覆的編號。否則,答覆將顯示在家長評論之前。在收到數據時,回覆會在評論之後出現,所以應該沒問題。

select facebookFeeds.*, facebookComments.id as cID, parentID, facebookComments.userID, facebookComments.name, facebookComments.message as cMessage, facebookComments.createdTime as cCreatedTime from facebookFeeds left join facebookComments on facebookFeeds.id = facebookComments.feedID where facebookComments.accountID = 24 order by facebookFeeds.createdTime desc, if(parentID is null, cID, parentID)