Как выполнить множество SELECT в одной хранимой процедуре?

Пишу примерно сделующее, но понимаю что выполняется все равно всего один раз.
inCategoryId — входная переменная процедуры
BEGIN
	DECLARE cpi  INT;
	SET cpi = inCategoryId;
    

    WHILE cpi > 0 DO
    	SELECT category_id
        FROM category 
        WHERE category_id = cpi;
        
        SET cpi = cpi - 1;
    END WHILE;
END


В целом если упростить, то надо следующее — имеется входная цифра(номер категории), она может быть потомком какой либо категории, которая может тоже быть чьим либо потомком и так до бесконечности.

Хочу что бы из всех этих категорий выбиралось допустим по паре товаров — при этом уровень вложенности неизвестен, может быть и корневая.
  • Вопрос задан
  • 2839 просмотров
Решения вопроса 1
tigrenok
@tigrenok
nested set для этих целей очень удобны. и без вложеных процедур — все выбирается одним простым запросом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@balloon
Вот пример функции для нахождения id корневой категории
CREATE DEFINER=`root`@`localhost` FUNCTION `FIND_CATEGORY_ROOT_ID`(category INT) RETURNS int(11)
    DETERMINISTIC
BEGIN
	DECLARE root INT;
	WHILE category IS NOT NULL DO
		SET root = category;
		SELECT parent_id INTO category FROM tree WHERE id = category;
	END WHILE;
	RETURN root;
END
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы