2010-02-05 4 views
0

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

  • Моя структура базы данных - это id, тело, время, ответ и глубина.
  • Правильное поле комментариев 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 

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

+0

я. Он хочет сортировать по теме и дате. –

+1

Автору нужен запрос SQL SELECT, который будет упорядочен должным образом с учетом глубины строки и родительской (ответной) информации. Считаете ли вы использование алгоритма обхода дерева? Это в значительной степени сделано для вложенных объектов. Google для «измененного обхода дерева предварительного заказа». –

ответ

1

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

Для хранения дерева Я рекомендую использовать алгоритм вложенных наборов.

Смежные вопросы