Задавайте вопросы, мы ответим
Вы не зашли.
Есть простая таблица `users` с двумя полями - `id` и `parent_id`.
Запрос получения пути от какого либо узла до корня дерева:
Неактивен
Путь до корня это различный по количеству набор строк для разных узлов. Неясно в каком виде вы хотите получить результат.
У вас в запросе limit 1, т.е. вы всегда будете получать только значение заданного узла и level = 1.
Пользовательские переменные - прошлый век. По феншую - обобщенные выражения.
Кроме того они позволяют одним запросом посчитать путь для нескольких узлов.
На примере из https://sqlinfo.ru/articles/info/28.html
Неактивен
Ну, к сожалению, на сервере стоит версия 5.7!
Запрос я опубликовал не полный - там просто среди родительских узлов ищется первый ближайший, который удовлетворяет некоторому фильтру. Поэтому использую LIMIT 1.
Работает кстати быстро и точно.
Сейчас это работает в связке с php-циклом по списку целевых узлов.
Хотел все объединить в один запрос.
Поэтому и спрашиваю - как соединить этот код с запросом на выборку целевых узлов из другой таблицы.
Неактивен
Имхо, никак.
Неактивен
К вопросу о быстродействии.
Сейчас переменные вычисляются столько раз сколько строк в таблице `users`. Если в `users` много ветвей, то, как минимум, можно вместо `users` использовать меньшую последовательность (главное, чтобы она была больше, чем максимально длинная ветвь).
В 5.7 можно имитировать обобщенные табличные выражения с помощью хранимой процедуры, см https://sqlinfo.ru/articles/info/22.html
Тогда на вход можно будет передавать набор значений.
Возможно получится сразу искать только первый ближайший родительский узел, который удовлетворяет некоторому фильтру.
Неактивен