Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.03;
Скачать: CL | DM;

Вниз

как вернуть иерархические данные   Найти похожие ветки 

 
serepun'ka   (2009-06-24 14:04) [0]

Всем доброго времени суток!

Есть запрос, возвращающий данные вида:

type | subtype  |  value       | official_inf
_________________________________
тип1 | подтип1 | значение1 | служ.ифн.1
тип1 | подтип1 | значение2 | служ.ифн.1
тип1 | подтип1 | значение3 | служ.ифн.1
тип2 | подтип1 | значение1 | служ.ифн.1
тип2 | подтип1 | значение2 | служ.ифн.1
тип2 | подтип1 | значение3 | служ.ифн.1

можно ли его преобразовать таким образом, чтобы dxDBTreeList отобразил все это в "хорошем" виде? Если можно, то как?


 
clickmaker ©   (2009-06-24 14:32) [1]

т.е. тип и подтип - это как бы папки, если по аналогии с визуальным деревом, а значениеХ - ветки?


 
serepun'ka   (2009-06-24 14:41) [2]


> clickmaker ©   (24.06.09 14:32) [1]

да


 
Онотоле   (2009-06-24 14:55) [3]

мало информации по структуре исх.данных, но в любом случае для результата нужен первичный ключ и поле со ссылкой на родительскую запись


 
serepun'ka   (2009-06-24 15:13) [4]


> Онотоле   (24.06.09 14:55) [3]

структура совсем исходных данных эээ... там запрос длинный...
первичный ключ есть.


> поле со ссылкой на родительскую запись

не совсем понял, что имелось в виду?

нужно как-то транспонировать все это дело в:

id | parent | value

1 | 0         | тип1
2 | 1         | подтип1
3 | 2         | значение1
4 | 2         | значение2
5 | 2         | значение3

ну и так далее... в общем, не так уж и важно, чтоб это все было обязательно запросом - можно и процедурой, лишь бы шустро выполнялось все это...

записей порядка сотни тысяч


 
clickmaker ©   (2009-06-24 16:14) [5]

наверно, как-то так

declare crs cursor
for select type, subtype, value, official_inf
from SrcTable

while (1=1) begin
 fetch next from crs into @type, @subtype, @value, @official_inf
 if @@fetch_status <> 0 break

 select @typeid = id from DestTable where value = @type
 if @typeid is null begin
   insert into DestTable (parent, value) values(0, @type)
   set @typeid = @@identity
 end
 select @subtypeid = id from DestTable where parentid = @typeid and value = @subtype
 if @subtypeid is null begin
   insert into DestTable (parent, value) values(@typeid , @subtype)
   set @subtypeid = @@identity
 end
 select @valueid = id from DestTable where id = @subtypeid and value = @value
 if @valueid is null begin
   insert into DestTable (parent, value) values(@subtypeid , @value)
 end
end


 
Онотоле   (2009-06-24 17:24) [6]

я пользуюсь union - ом, собирая подобные конструкции


 
serepun'ka   (2009-06-24 17:31) [7]


> clickmaker ©   (24.06.09 16:14) [5]

ну так-то... вероятно, больше никак...

Всем спасибо, тема закрыта.


 
Ega23 ©   (2009-06-24 17:49) [8]


> я пользуюсь union - ом, собирая подобные конструкции


Запаришься тут union-ом...


 
ANB   (2009-06-25 13:20) [9]


> Запаришься тут union-ом...

Эт точно. connect by - наше все :)



Страницы: 1 вся ветка

Текущий архив: 2010.10.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
10-1168342746
Priest
2007-01-09 14:39
2010.10.03
Как определить путь к dll библиотеки com сервера


11-1224681119
dron9999
2008-10-22 17:11
2010.10.03
не могу установить компонент


15-1278348746
SemNic
2010-07-05 20:52
2010.10.03
Могут ли быть проблемы в WIN7 при эксплуатации для проги


15-1278427024
Virgo_Style
2010-07-06 18:37
2010.10.03
"стратегия" общения с проблемным сервером


3-1245837856
serepun'ka
2009-06-24 14:04
2010.10.03
как вернуть иерархические данные