Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Не погу понять, откуда растут ноги с такой проблемой:
Есть таблица, в которой элементы с древовидной иерархией, типа:
Отредактированно BrownFurry (25.02.2016 18:02:08)
Неактивен
вы неправильно используете переменные, поэтому у вас такие нестабильные результаты
посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=1742
Неактивен
vasya написал:
вы неправильно используете переменные, поэтому у вас такие нестабильные результаты
посмотрите http://sqlinfo.ru/forum/viewtopic.php?id=1742
Посмотрел тему, примеры и ссылки с нее. Честно говоря, не понял по тому материалу, что не так у меня здесь. Все-таки ситуация обратная - надо от дочернего выбрать все родительские.
Вы можете сказать, что конкретно я использую не так и как нужно это исправить?
Неактивен
вы используете переменные в части where
тот факт, что запрос иногда работает не более чем случайность
а в последних версиях, где упрощаются тривиальные from-подзапросы, он гарантированно работать не будет
к сожалению, переменные имеют целый ряд ограничений и вашу задачу так не решить.
Неактивен
vasya написал:
вы используете переменные в части where
тот факт, что запрос иногда работает не более чем случайность
По ссылке, где переместили переменные из WHERE, запрос изначально возвращал не то, что хотелось изначально. Здесь запрос изначально все возвращал, но только для свежедобавленных записей. Поэтому у меня возникла мысль о кэшировании такого запроса. Как будто где-то при первом запросе сохраняется эта связь child-parent.
vasya написал:
где упрощаются тривиальные from-подзапросы
Можете подсказать ссылку, где про это прочитать можно?
vasya написал:
к сожалению, переменные имеют целый ряд ограничений и вашу задачу так не решить.
Можете подсказать какой-то путь решения проблемы?
Неактивен
В результате экспериментов выяснил, что дело не в магии переменных. Просто текущий запрос работает только если ID родителя меньше ID текущего. Вот тут не работает
http://sqlfiddle.com/#!9/f0a88/1
Если в базе поменять где стоит 20 на что-то меньше 15, то прекрасно все работает.
Запрос "достался в наследство" от предыдущего разраба. При реальном запуске системы сейчас вот такое и всплыло. Почитал на Хабре статьи про разную организацию иерархии, буду думать.
Неактивен