Сортировка результатов MySQL по контексту - PullRequest
0 голосов
/ 06 февраля 2010

Я пытаюсь создать систему вложенных комментариев, используя PHP и MySQL. Но я застрял

  • Моя структура базы данных - это идентификатор, тело, время, ответ и глубина.
  • Поле reply обычного комментария будет '0'. Если он отвечает другому, он будет соответствовать id комментария, на который он отвечает.
  • depth означает, насколько глубоко он от самого высокого родителя

Так что, если это содержимое моей таблицы ...

+------+-------------+--------+---------+---------+
|  id  |  body       |  time  |  reply  |  depth  |
+------+-------------+--------+---------+---------+
|   1  |  Some msg1  |   1    |    0    |    0    |
|   2  |  Some msg2  |   2    |    0    |    0    |
|   3  |  aReply1    |   3    |    1    |    1    |
|   4  |  aReply2    |   4    |    1    |    1    |
|   5  |  aReply21   |   5    |    3    |    2    |
+------+-------------+--------+---------+---------+

Это выглядело бы примерно так ...

- (1) Some msg1
-- (3) aReply1
--- (5) aReply21
-- (4) aReply2
- (2) Some msg2

Я надеюсь, что этот метод можно использовать, он выходит за рамки моей логики.

1 Ответ

1 голос
/ 06 февраля 2010

Если вы не можете изменить структуру таблицы, вы можете просто получить все строки (выбрать * из таблицы по времени), а затем сгенерировать дерево с помощью PHP.

Для хранения дерева я рекомендую использовать алгоритм Nested Sets.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...