Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте, есть таблица с полями elemID, parentID, leftKey
Мне нужно вывести данные в таком порядке
elemID = 1, parentID = 0, leftKey = 1
далее много елементов с ORDER BY `leftKey` ASC и с
elemID = 0, parentID = 1, leftKey = n
потом опять элемент с
elemID = 2, parentID = 0, leftKey = 1
потом много с ORDER BY `leftKey` ASC и с
elemID = 0, parentID = 2, leftKey = n
и так далее
как можно сделать такую выборку, заранее спасибо
Отредактированно vvsh (20.08.2010 14:07:27)
Неактивен
Хорошего способа нет. Можно придумать, например, какой-то костылик.
ORDER BY (elemID * 1000000 + parentID * 1000000), elemID DESC, leftKey
Надо понимать, что он не будет использовать индекс.
Неактивен
Просто это древовидные комментарии с использованием Nested Sets. Сейчас у меня выбирается так
Отредактированно vvsh (20.08.2010 14:32:22)
Неактивен
Не-а. В nested sets используются понятия «левый» и «правый», а не «родитель»
При Вашей организации данных проще всего делать отдельную табличку «все дети»
и сортировать по ней.
Неактивен
У меня и есть левый и правый. просто есть комментарий - родитель, а у него много детей. это струкрута Nested Sets. Но так как у меня много родителей то мне нужно их разделять. поэтому ввел parentID и elemID.
Вот еще. возникает такая ошибка:
Отредактированно vvsh (20.08.2010 16:26:54)
Неактивен
Так сортируйте тогда по левому полю — и всё?
Проблема в том, что – ≠ - ≠ −.
Неактивен
Дело в том что левое поле может пересекаться у разных комментариев у которых parentID = 0. Поэтому так не получится.
Не заметил, спасибо
Неактивен