Мой сайт имеет функцию обмена сообщениями, где один пользователь может отправлять сообщения другому.Сообщения поддерживают многопоточность - родительское сообщение может иметь любое количество дочерних элементов, но только один уровень.
Таблица сообщений выглядит следующим образом:
Messages
- Id (PK, Auto-increment int)
- UserId (FK, Users.Id)
- FromUserId (FK, Users.Id)
- ParentMessageId (FK to Messages.Id)
- MessageText (varchar 200)
Я хочу отображать сообщения настраница с каждым «родительским» сообщением, за которой следует свернутое представление дочерних сообщений.
Могу ли я использовать предложение GROUP BY или аналогичную конструкцию для извлечения родительских сообщений и дочерних сообщений - все в одном запросе?Прямо сейчас я получаю только родительские сообщения, затем перебираю их и выполняю еще один запрос для каждого, чтобы получить все связанные дочерние сообщения.
Я хотел бы получать сообщения, подобные этому:
Parent1
Child1
Child2
Child3
Parent2
Child1
Parent3
Child1
Child2