私のサイトには、あるユーザーが別のユーザーにメッセージを送信できるメッセージ機能があります。メッセージはスレッド化をサポートします。親メッセージは任意の数の子を持つことができますが、深さは 1 レベルのみです。
メッセージ テーブルは次のようになります。
Messages
- Id (PK, Auto-increment int)
- UserId (FK, Users.Id)
- FromUserId (FK, Users.Id)
- ParentMessageId (FK to Messages.Id)
- MessageText (varchar 200)
各「親」メッセージの後に子メッセージの折りたたまれたビューが続くページにメッセージを表示したいと思います。
GROUP BY 句または同様の構文を使用して、親メッセージと子メッセージをすべて 1 つのクエリで取得できますか? 現在、親メッセージのみを取得してから、それらをループし、それぞれに対して別のクエリを実行して、関連するすべての子メッセージを取得しています。
次のようなメッセージを受け取りたいです。
Parent1
Child1
Child2
Child3
Parent2
Child1
Parent3
Child1
Child2