rembo
Новичок
Вопрос по Nested Sets
Пытаюсь использовать сабж для создания классификатора товаров.
Есть таблица 'category' с полями cid, cleft, cright, clevel, title.
Для ее создания воспользовался dbtree.
Без параметров скрипт выводит дерево каталогов первого уровня, по нажатию
на одну из категорий в тот же скрипт приходит значение $cleft.
(Так же можно организовать чтоб приходили значения $cid, $cright, $clevel)
По выбору например подкатегории Обувь раздела Одежда
Нужно вывести дерево такого вида
Мебель
Одежда
- Шубы
- Дубленки
- Обувь
- - Туфли
- - Кроссовки
- - Сапоги
- - Ботинки
- Шапки
Сувениры
Бытовая химия
Т.е. непосредственных потомков родительских категорий выбранной категории
(загнул кажись)
Можно ли вывести такое дерево единственным запросом?
Попробовал вот-так:
SELECT * FROM category AS t1, category AS t2
WHERE (($cleft BETWEEN t1.cleft AND t1.cright) and (t1.clevel>0) and
(t2.cleft BETWEEN t1.cleft AND t1.cright) and (t2.clevel-1=t1.clevel))
Не работает.
Здесь первое условие находит всех родителей подкатегории,
второе запрещает вывод корня, третье как мне казалось,
должно было выводить потомков найденых родительских
категорий, и четвертое ограничение для вывода только
непосредственных потомков категории.
Помогите составить запрос, или скажите мне, что лучше
выбрать всех предков, а потом делать несколько отдельных
запросов.
Пытаюсь использовать сабж для создания классификатора товаров.
Есть таблица 'category' с полями cid, cleft, cright, clevel, title.
Для ее создания воспользовался dbtree.
Без параметров скрипт выводит дерево каталогов первого уровня, по нажатию
на одну из категорий в тот же скрипт приходит значение $cleft.
(Так же можно организовать чтоб приходили значения $cid, $cright, $clevel)
По выбору например подкатегории Обувь раздела Одежда
Нужно вывести дерево такого вида
Мебель
Одежда
- Шубы
- Дубленки
- Обувь
- - Туфли
- - Кроссовки
- - Сапоги
- - Ботинки
- Шапки
Сувениры
Бытовая химия
Т.е. непосредственных потомков родительских категорий выбранной категории
(загнул кажись)
Можно ли вывести такое дерево единственным запросом?
Попробовал вот-так:
SELECT * FROM category AS t1, category AS t2
WHERE (($cleft BETWEEN t1.cleft AND t1.cright) and (t1.clevel>0) and
(t2.cleft BETWEEN t1.cleft AND t1.cright) and (t2.clevel-1=t1.clevel))
Не работает.
Здесь первое условие находит всех родителей подкатегории,
второе запрещает вывод корня, третье как мне казалось,
должно было выводить потомков найденых родительских
категорий, и четвертое ограничение для вывода только
непосредственных потомков категории.
Помогите составить запрос, или скажите мне, что лучше
выбрать всех предков, а потом делать несколько отдельных
запросов.