materialized path и сортировка

pilot911

Новичок
Автор оригинала: zerkms
pilot911

ну вот так вот materialized path устроен. раскрой свою идею немного подробнее.
я работал с такой структурой - и точно помню, что хранил два поля path, в одном хранился классический путь с ID текущей записи на конце, а во втором поле - без этого ID, плюс хранил поле PID - некоторая избыточность, но удобная, особенно для JS менюшек, в которых нужно знать ID родителя

таким образом, получалось без конкатенаций сразу средствами БД извлекать дерево по path_2, name
 

zerkms

TDD infected
Команда форума
pilot911
не совсем понимаю как parent_path может помочь. покажи ORDER BY и применим его к примеру выше со странами/городами.
 

pilot911

Новичок
Автор оригинала: zerkms
pilot911
не совсем понимаю как parent_path может помочь. покажи ORDER BY и применим его к примеру выше со странами/городами.
всю ночь пытаюсь вспомнить, как это делалось 4 года назад

возможно, я хранил в path не список родительских ID, а полное имя - name_1/name_2/name_3
 

zerkms

TDD infected
Команда форума
хыхы :) одно из решений - да... но имхо удобнее тогда - сделать отдельную таблицу с уже готовыми сортировками и выбирать по ней.
 

fixxxer

К.О.
Партнер клуба
классическая денормализация (отлично работает для практически всех типов деревьев) - добавить поле level. В нормальных СУБД можно сделать функциональный индекс еще (мария почти нормальная - там есть virtual columns).
 

Фанат

oncle terrible
Команда форума
ну КАК ты по двум полям сортировал-то я не пойму?
Я что тебе сказал? Сортируй по двум полям.
Ты рисуешь картинку, в которой сортировка все так же по одному полю.
Зачем ты спрашиваешь, если не делаешь то что тебе говорят?
 

Benderlio

Новичок
вот сортировка по полю
order by path DESC, date DESC (или ASC) результат один и тот же
 

Вложения

  • 8,8 KB Просмотры: 11

Фанат

oncle terrible
Команда форума
НУ РАЗУМЕЕТСЯ ОДИН И ТОТ ЖЕ! у тебя path уникальный! какой смысл после сортировки по уникальному полю сортировать еще по одному?
И при чем здесь сортировка по дате?
опять же - ну где я тебе говорил про дату? откуда ты ее взял?
почему ты говоришь одно, а делаешь совсем другое? Какой в этом смысл?
 

Benderlio

Новичок
у меня такие поля id, post_id, path, text, date - по каким полям сортировать? что хранить в поле node я так и не понял
и запрос такой
select * from comm where post_id=10
order by path ASC - работает как надо
ну а другие не получаются
 

Фанат

oncle terrible
Команда форума
блин, ты сам писал про node, а теперь говоришь, то не знаешь.
Это id первого в ветке комментария, записанный во всех нижеследующих комментах
 

Фанат

oncle terrible
Команда форума
я не знаю, что ты называешь словом pid но тебе нужен id первого в ветке комментария, записанный во всех нижеследующих комментах
 

Фанат

oncle terrible
Команда форума
да никакой не парент! парент - этор ид предыдущего. а тебе нужно ид первого
дальше по нему сортировать
если ты еще помнишь, что тебе надо было
 

Benderlio

Новичок
гм, вроде работает как надо, но я получается обхожусь уровнем вложенности комментария и этим полем node
зачем тогда вообще поле path? ну т.е. просто для вывода комментариев получается оно не нужно?
 
Сверху