Meine Site verfügt über eine Messaging-Funktion, bei der ein Benutzer eine Nachricht senden kann. Die Nachrichten unterstützen das Threading - eine übergeordnete Nachricht kann eine beliebige Anzahl von untergeordneten Elementen haben, aber nur eine Ebene tief.SQL-Abfrage für Threaded-Nachrichten
Die Nachrichten-Tabelle sieht wie folgt aus:
Messages
- Id (PK, Auto-increment int)
- UserId (FK, Users.Id)
- FromUserId (FK, Users.Id)
- ParentMessageId (FK to Messages.Id)
- MessageText (varchar 200)
Ich mag würde Nachrichten mit jedem ‚Eltern‘ Nachricht von einer reduzierten Ansicht der Kinder-Nachrichten folgen auf einer Seite anzuzeigen.
Kann ich die GROUP BY-Klausel oder ein ähnliches Konstrukt verwenden, um übergeordnete Nachrichten und untergeordnete Nachrichten in einer einzigen Abfrage abzurufen? Im Moment erhalte ich nur übergeordnete Nachrichten, durchlaufe sie und führe eine weitere Abfrage durch, um alle zugehörigen untergeordneten Nachrichten zu erhalten.
Ich möchte Meldungen wie diese bekommen:
Parent1
Child1
Child2
Child3
Parent2
Child1
Parent3
Child1
Child2
Welches DBMS-System? MySQL? Orakel? –
Ich benutze MySQL – Harper