[Закрыть]
 
popoff.donetsk.ua
Личиной счастья может быть беда, А счастье - корнем бедствий иногда. О, если бы мы знали наперёд, Что в кривду правда вдруг не перейдёт И что добро не обернётся злом! Мы в обольщеньях горестных живём. /Дао Де Цзин/
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Форум - Программирование на PHP - Иерархическое дерево и хранимые процедуры

Иерархическое дерево и хранимые процедуры

форумы popoff.donetsk.ua
Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Автор Сообщение
Apostol
Герман
Фев, 2009
Сообщений: 1
Apostol url://forum.message:2728
Иерархическое дерево и хранимые процедуры

Когда то делал это легко и просто на 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$$

так вот в чем проблема -
в половине случаев отрабатывает все ок, а в половине берет только одну ветку дерева :(

Тогда я попробовал сделать более правильно-заменить селект на препаре конструкцию:

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;


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

Внимание! Этот топик устарел. Пожалуйста, создайте новый топик, чтобы задать интересующий Вас вопрос.

Страницы: [1]
<< Новый  |  Старый >>  |  Ответ не возможен
Вход
Поиск[?]:
Гинеколог, стоматолог, психотерапевт в Донецке