2015-11-14 2 views
-1

Я эту таблицу со следующими даннымиКак я могу сделать иерархию данных на основе значения

Cat  CatID  Tag 
0   1  LapTop 
1   2   Mac 
1   3   HP 
1   4   Acer 
1   5   Sony 
1   6   DELL 
6   7   Latitude 
6   8   Vostro 
6   9   inspiron 
6   10  xps 

Основываясь на кошках значение и CatID я хочу, чтобы получить этот результат если Cat=0 я хочу, чтобы отобразить значение в столбце, и если CatID=Cat я хочу, чтобы отобразить значение в другом столбце как ниже значения, которое я хочу, чтобы вставить в новую таблицу

Tag  Libelle Type 
LapTop  Mac 
LapTop  HP 
LapTop  Acer 
LapTop  Sony 
LapTop  DELL  Latitude 
LapTop  DELL  Vostro 
LapTop  DELL  inspiron 
LapTop  DELL  xps 
+0

Каким образом "ноутбук" произошло 8 раз? тогда как CatID = Cat имеет только 5 случаев? Помимо «DELL» и «LaoTop» ни один из них не соответствовал CatID = Cat, а затем, как другие отображались в вашем примере результата? –

+0

@TejuMB Структура данных является иерархической. Столбец «Тег» представляет собой родительский узел «Libelle» для детей и «Тип» внуков. –

ответ

1

Простой INNER и LEFT присоединиться к операции могут производить желаемый набор результатов:

SELECT t1.Tag, t2.Tag AS Libelle, 
     COALESCE(t3.Tag, '') AS Type 
FROM mytable AS t1 
INNER JOIN mytable AS t2 ON t1.CatID = t2.Cat 
LEFT JOIN mytable AS t3 ON t2.CatID = t3.Cat 
WHERE t1.Cat = 0 

Demo here