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

Ваш аккаунт

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

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

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

построить дерево

11K
23 августа 2005 года
Yarik_2000
6 / / 23.08.2005
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 сделать такой запрос.
Если кто приблизительно знает как это примерно можно сделать отзовитесь.
Спасибо.
1
29 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Yarik_2000
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 помоему есть целый ряд статей по вопросу формирования дерева.

10
30 августа 2005 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by kot_
Сам по себе SQL рекурсии не поддерживает


Рекурсию поддерживает Oracle - ключевые слова connect by, start with, level, siblings специально предназначены для построения древовидных рекурсивных запросов.

1
30 августа 2005 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by Freeman
Рекурсию поддерживает Oracle - ключевые слова connect by, start with, level, siblings специально предназначены для построения древовидных рекурсивных запросов.


Угу. Но это уже конкретное расширение. Не похоже что бы задавший вопрос был знаком с ним дружен...:)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог