0

これに対する良い答えが見つからないようです。現在、2 つのテーブルがあり、1 つは Facebook の投稿、もう 1 つはコメントです。FB が最近これを行ったので、これに加えて返信を追加する必要があります。

私の現在のクエリは、投稿から選択し、コメントに結合します。返信のために私が望んでいるのは、コメントに別のエントリを追加することですが、親 ID を使用します。最終的にどのようなクエリを実行しても、結果は次のようになります。

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

したがって、投稿 1 にはコメントがなく、投稿 2 には 1 つのコメントがあり、そのコメントに対する 2 つの返信があり、投稿 3 にはコメントが 1 つしかありません。私のコメント テーブルでは、コメント 1 ~ 4 はすべて同じテーブル内の個別のエントリです。コメントテーブルに別の結合を持たなくても、1 つのクエリでこれを行う方法はありますか?

編集、現在のクエリ。このクエリは返信を処理しません。投稿と 1 レベルのコメントのみを対象としています。

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
4

1 に答える 1

0

私はそれを理解し、注文句でifを使用して動作させました。唯一の欠点は、親コメント 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)
于 2013-04-23T15:37:13.663 に答える