Как вы можете заказать как элементы в иерархической структуре вложенного набора? - PullRequest
0 голосов
/ 17 ноября 2011

У меня есть запрос, который выдает следующий вывод в структуре вложенного набора:

databaseName    |   xType       |   displayLabel        |   child_xType     |   child_displayLabel  |   lft1    |   lft2
--------------------------------------------------------------------------------------------------------------------------------
Bob                 label           Search Model name       NULL                NULL                    252         NULL
Bob                 textbox         productName             button              X                       254         255
Bob                 label           Company                 NULL                NULL                    258         NULL
Bob                 combobox        Company                 comboboxItem        CCCC                    260         261
Bob                 combobox        Company                 comboboxItem        DDDD                    260         263
Bob                 combobox        Company                 comboboxItem        HHHH                    260         265
Larry               label           Search Model Name       NULL                NULL                    408         NULL
Larry               textbox         productName             button              X                       410         411
Larry               label           Company                 NULL                NULL                    414         NULL
Larry               combobox        Company                 comboboxItem        DDDD                    416         417
Larry               combobox        Company                 comboboxItem        HHHH                    416         419

Единственное различие между «базами данных» Боба и Ларри состоит в том, что у Боба есть дополнительный элемент comboboxItem, называемый «CCCC».То, что я хотел бы вернуть, это набор результатов, который объединяет различные элементы «баз данных» Боба и Ларри, сохраняя при этом правильный порядок, как показано ниже.

databaseName    |   xType       |   displayLabel        |   child_xType     |   child_displayLabel  
----------------------------------------------------------------------------------------------------
Junior              label           Search Model name       NULL                NULL                    
Junior              textbox         productName             button              X                   
Junior              label           Company                 NULL                NULL                
Junior              combobox        Company                 comboboxItem        CCCC                
Junior              combobox        Company                 comboboxItem        DDDD                    
Junior              combobox        Company                 comboboxItem        HHHH    

Некоторые примечания: результат долженпоявляются в точном порядке, как указано выше, что в конечном итоге определяется порядком значений lft1 и lft2 в первом наборе результатов.Кроме того, новая база данных «Младший» является более или менее произвольным именем для новой объединенной «базы данных».

Я могу представить способы решения этой проблемы на уровне клиента (отображение каждого элемента строка за строкой),а также указав Ларри на использование тех же поисков, что и Боб, но есть ли способ добиться этого набора результатов с помощью SQL на основе множеств?

Спасибо

1 Ответ

2 голосов
/ 17 ноября 2011

Мне все еще немного неясно, о чем вы спрашиваете, но, похоже, вы можете получить желаемый результат с помощью следующего запроса:

SELECT distinct 'Junior' as Database, 
       xType, 
       displayLabel, 
       child_xType, 
       child_displayLabel
FROM MyTable
ORDER BY displayLabel DESC, child_displayLabel ASC

ОБНОВЛЕНИЕ:

Я все еще смущен после вашего последнего комментария, но попробуйте

SELECT 'Junior' as Database, 
       xType, 
       displayLabel, 
       child_xType, 
       child_displayLabel
FROM MyTable
GROUP BY xType, displayLabel, child_xType, child_displayLabel
ORDER BY min(lft1),  min(lft2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...