2014-09-01 2 views
1

У меня есть база данных SQL Server 2008. У меня есть таблица со следующей структуройВыбор столбца на основе дочерней и родительской категорий

CatID ParentCatID NAME Level 
1  NULL  A  1 
2   1   B  2 
3   2   C  3 
4  NULL  D  1 
5   4   E  2 
6   5   F  3 
7  NULL  G  1 
8   7   H  2 

Я хочу выбрать столбец Имя в Heirarchical формате, как показано ниже:

Level1 Level2 Level3 
    A  B  C 
    D  E  F 

В моей таблице все Level1 категории имеют LEVEL2 детей. Аналогично, все дети уровня2 имеют детей уровня 3. Итак, как я могу получить данные в моем желаемом формате.

+0

Вы только собираетесь три уровня глубоко? Или он должен быть бесконечно глубоким? (Последнему нужны общие выражения таблицы.) –

+0

К счастью, его только 3 уровня глубокие – MarsOne

ответ

2

Это простой запрос, как это:

select 
    C1.NAME as Level1, 
    C2.NAME as Level2, 
    C3.NAME as Level3 
from Categories C1 
inner join Categories C2 
    on C2.ParentCatId = C1.CatId 
inner join Categories C3 
    on C3.ParentCatId = C2.CatId 
where C1.Level = 1 and C2.Level = 2 and C3.Level = 3 and 
+0

Как-то он выдает синтаксическую ошибку – MarsOne

+1

Ой, глупый мне! Исправленный. – JotaBe

+0

Это работало. Ты мужчина – MarsOne

Смежные вопросы