Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Nested Set Tree

3.2K
07 апреля 2009 года
Гудвин
186 / / 22.12.2007
Здравствуйте. Возникла такая ситуация. Дерево заполнялось через функцию:
 
Код:
CREATE FUNCTION FILTERGROUP_INSERT_CHILD(FilterID INT UNSIGNED, ParentID INT UNSIGNED, NumID INT UNSIGNED, NodeLine TINYTEXT, NodeCode varchar(100))
  RETURNS int(11)
  BEGIN
    DECLARE v_leftkey INT UNSIGNED DEFAULT '0';
    SELECT LB INTO v_leftkey FROM `bd_filter_group` WHERE `ID_FGROUP` = ParentID;
    UPDATE `bd_filter_group` SET `RB` = `RB` + 2 WHERE `RB` > v_leftkey;
    UPDATE `bd_filter_group` SET `LB` = `LB` + 2 WHERE `LB` > v_leftkey;
    INSERT INTO `bd_filter_group` (`INDEX_FILTER`,`NUM`,`LINE`, `LB`, `RB`,`PARENT`,`OPTIONS`) VALUES (FilterID, NumID, NodeLine, v_leftkey + 1, v_leftkey + 2,ParentID,NodeCode);
    RETURN LAST_INSERT_ID();
END;

выводилось с подгрузкой при открытии дочернего, сейчас нужно вывести полностью, использую:
Код:
SELECT
    `node`.*,
    (COUNT(`parent`.`LINE`) - 1) AS `level`
FROM
    `bd_filter_group` AS `node`,
    `bd_filter_group` AS `parent`
WHERE
   `node`.`INDEX_FILTER`=FilterID AND `parent`.`INDEX_FILTER`=FilterID AND
    `node`.`LB` BETWEEN `parent`.`LB` AND `parent`.`RB`
GROUP BY `node`.`LINE`
ORDER BY `node`.`LB`

но вывод получается наоборот, то есть:
-gr3
-gr2
---gr2.2
---gr2.1
-gr1
что сильно затрудняет работу с ним, подскажите как вывести в верной последовательнсоти?
6
07 апреля 2009 года
George
4.1K / / 05.01.2007
может быть что-то типа
GROUB BY `node`.`LINE` DESC
ORDER BY `node`.`LB` DESC
ну короче поиграться надо с этим вроде...
3.2K
07 апреля 2009 года
Гудвин
186 / / 22.12.2007
нет, все варианты не подходят, может быть как-то parent нужно ещё отсортировать?

получилось вывести правельно когда убрал
ORDER BY `node`.`LB`
3.2K
07 апреля 2009 года
Гудвин
186 / / 22.12.2007
нет, это не решение, при большой глубине сбой. есть какие-нибудь идеи?
3.2K
09 апреля 2009 года
Гудвин
186 / / 22.12.2007
ех, прикольно, у Joe Celko деревья верх ногами растут, эт я понимаю смартливый в скуле человек... как вывести не придумал, буду инсерт запрос по другому делать :(
3.2K
21 апреля 2009 года
Гудвин
186 / / 22.12.2007
а ларчик просто открывался :o
GROUP BY `node`.`ID_FGROUP`
ORDER BY `node`.`RB` DESC
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог