Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Динамические запросы в функциях или как вернуть значение из функции / 6 сообщений из 6, страница 1 из 1
13.03.2019, 18:56
    #39785559
pr0n1x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
Здравствуйте.

Есть обычное дерево id, parent_id, name.
Нужно написать процедуру/функцию которая возвращает потомков для указанных узлов со степенью вложенности 3 например.

Для того, чтобы найти 3ю степень вложенности, нужно перебрать 2ю, взять их ийдишки и найти найдишки для 3й степени вложенности. Как это сделать правильно?

Функция подобной этой не работает
Код: sql
1.
2.
3.
4.
5.
BEGIN	
	DECLARE ids MEDIUMTEXT DEFAULT '';
	SELECT GROUP_CONCAT(`id`) AS `ids` INTO ids FROM `referrals` WHERE `parent_id` IN (ref_ids);
	RETURN ids;
END



Потому что в IN я не могу напрямую передать строку с идентификаторами, mysql ее не воспринимает как набор значений.
Делать диманические запросы execute в функциях нельзя.

Как можно решить такую задачу?
...
Рейтинг: 0 / 0
14.03.2019, 07:51
    #39785648
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
Укажите точную версию сервера.
...
Рейтинг: 0 / 0
14.03.2019, 08:06
    #39785656
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
pr0n1xсо степенью вложенности 3 напримерЕсли вложенность ограничена сверху, то не нужны ни функция, ни динамический запрос - задача решается одним запросом с нужным количеством джойнов таблицы самой с собой.
...
Рейтинг: 0 / 0
14.03.2019, 10:18
    #39785718
pr0n1x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
AkinaУкажите точную версию сервера.

MySql 5.5 - with recursive не поддерживается
...
Рейтинг: 0 / 0
14.03.2019, 10:20
    #39785722
pr0n1x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
miksoftpr0n1xсо степенью вложенности 3 напримерЕсли вложенность ограничена сверху, то не нужны ни функция, ни динамический запрос - задача решается одним запросом с нужным количеством джойнов таблицы самой с собой.

В том то и дело, что вложенность не ограничена
...
Рейтинг: 0 / 0
14.03.2019, 10:30
    #39785729
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамические запросы в функциях или как вернуть значение из функции
pr0n1xвложенность не ограниченаВ т.ч. и вложенность которая может быть затребована?

Ну тогда да, процедура, внутри цикл и временная таблица.

Цикл - типа FOR (эмулируем, ибо именно такого синтаксис не предусмотрел).
Копируем во временную таблицу записи первого уровня. Затем в цикле вставляем в неё всех потомков уже имеющихся в ней записей (с игнором повторов), связывая её с исходной таблицей.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Динамические запросы в функциях или как вернуть значение из функции / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]