Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Иерархическая структура в хранимке (Герман Клюшин) 06/02/2009 - 17:26:39
      Re: Иерархическая структура в хранимке (Герман Клюшин) 06/02/2009 - 17:29:32

> Original message text:
> From: Герман Клюшин - 06/02/2009 - 17:26:39
> Subject:Иерархическая структура в хранимке
> -----------------
> Когда то делал это легко и просто на Interbase - а на MySQL просто мучение одно! Наваял что-то подобное:
> CREATE DEFINER=`root`@`%` PROCEDURE `get_all_child_ids`(
> IN base INT UNSIGNED,
> IN max_levels INT,
> OUT ids MEDIUMTEXT)
> BEGIN
> DECLARE currlevel INT DEFAULT 0;
> SET @parents = base;
> -- В случае если max_levels равно 0, то допускаем 100000 уровней.
> -- Отрицательные значения дадут один уровень — это побочное явление.
> SET currlevel = IF(max_levels, 1, -100000);
> SET ids = '';
> REPEAT
> SET ids = CONCAT(ids, ',', @parents);
> SELECT GROUP_CONCAT(objID) INTO @parents FROM lsk_catalog_structure
> WHERE parentID IN (@parents);
> SET currlevel = currlevel + 1;
> UNTIL (@parents IS NULL OR currlevel > max_levels) END REPEAT;
> SET ids = SUBSTR(ids, 2);
> END$$
>


From: Герман Клюшин - 06/02/2009 - 17:29:32
Subject:Иерархическая структура в хранимке
-----------------
Сори, так вот и проблема - в половине случаев отрабатывает все ок, а в половине берет только одну ветку дерева :(
Пробовал сделать через
SET @stm = CONCAT(
'SELECT GROUP_CONCAT(', name_id, ') INTO @parents FROM ', name_table,
' WHERE ', name_parent,' IN (', @parents, ')');
PREPARE fetch_childs FROM @stm;
EXECUTE fetch_childs;
DROP PREPARE fetch_childs;

Работает правильно, но из ПХП не запускается - говорит не тот контекст :(((
Помогите плииииз!


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
34964



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |