построить дерево
Люди помогите или подскажите как мне справиться с такой проблеммой.
Есть база данных в которой есть таблица в которой есть такие строки:
'01. Насосы -> 01. Оборудование',
'01. Лампы-> 01. Оборудование -> 02. Item',
'02. Лампы2-> 01. Оборудование -> 02. Item',
рис 1.
и т.д. и т.п. Их много(неизвестно сколько).
В этих строках отображается иерархия будущего дерева.То есть:
+-01.Оборудование
__+-01.Насосы
+-02.Item
___+-01.Оборудование
_____+-01. Лампы
_____+-02. Лампы2
Вот это дерево и нужно нарисовать имея подобные строки (см.рис 1)
Мне нужно знать как оможно оперировать с этими строками.
Я просто в sql новичек.Все время писал на c++,
а тут нужно на sql сделать такой запрос.
Если кто приблизительно знает как это примерно можно сделать отзовитесь.
Спасибо.
I need help!!
Люди помогите или подскажите как мне справиться с такой проблеммой.
Есть база данных в которой есть таблица в которой есть такие строки:
'01. Насосы -> 01. Оборудование',
'01. Лампы-> 01. Оборудование -> 02. Item',
'02. Лампы2-> 01. Оборудование -> 02. Item',
рис 1.
и т.д. и т.п. Их много(неизвестно сколько).
В этих строках отображается иерархия будущего дерева.То есть:
+-01.Оборудование
__+-01.Насосы
+-02.Item
___+-01.Оборудование
_____+-01. Лампы
_____+-02. Лампы2
Вот это дерево и нужно нарисовать имея подобные строки (см.рис 1)
Мне нужно знать как оможно оперировать с этими строками.
Я просто в sql новичек.Все время писал на c++,
а тут нужно на sql сделать такой запрос.
Если кто приблизительно знает как это примерно можно сделать отзовитесь.
Спасибо.
Если таблица выглядит действительно так как ты на рисовал - то оперировать такой, ой лучше ненадо...:)
Ну а если серьезно, предположив все же что база нормальная, то для построения дерева обычно используют или хранимую процедуру на сервере или несколько запросов с клиента в рекурсии. Другого способа вроде нет. Сам по себе SQL рекурсии не поддерживает, если вложенность четко задана - можно использовать подзапросы. Естественно, при этом у тебя должен быть четкий критерий для определения отношения родитель-потомок.
Т.е. таблица должна быть примерно такой:
Код Название Кто родитель(код) Уровень(опц.)
Дальше формируешь запрос:
select * from table where Kто родитель=NULL
получаешь первый уровень, затем для каждого выбираешь потомков и т.д. Если делать на клиенте запросик получится еще тот. На ibase.ru помоему есть целый ряд статей по вопросу формирования дерева.
Сам по себе SQL рекурсии не поддерживает
Рекурсию поддерживает Oracle - ключевые слова connect by, start with, level, siblings специально предназначены для построения древовидных рекурсивных запросов.
Рекурсию поддерживает Oracle - ключевые слова connect by, start with, level, siblings специально предназначены для построения древовидных рекурсивных запросов.
Угу. Но это уже конкретное расширение. Не похоже что бы задавший вопрос был знаком с ним дружен...:)