0

(階層データの逆引き)について質問する前に 階層データ の逆引きクエリ

答えの 90% を得ました。

select i.ID, l.lev1 as Name, NULL as Parent
from IDTable i 
 join LevelTable l on i.Name = l.lev1
 union
select i.ID, l.lev2 as Name, (select j.ID from IDTable j where j.Name = l.lev1)
from IDTable i 
 join LevelTable l on i.Name = l.lev2
 union
select i.ID, l.lev3 as Name, (select j.ID from IDTable j where j.Name = l.lev2)
from IDTable i 
 join LevelTable l on i.Name = l.lev3

今、完全に私の答えを得るために、もう1つ質問があります

クエリで各フィールドの位置を取得する方法。たとえば、TUBE、LCD、PLASMA の親は TELEVISION です。アルファベット順に各位置 (0、1、2、3…) の値を与える位置フィールド値が必要です。

category_id   | name                   | parent |position

 +-------------+----------------------+--------+-------
|           1 | ELECTRONICS          |   NULL |0
|           2 | TELEVISIONS          |      1 |0
|           3 | TUBE                 |      2 |3
|           4 | LCD                  |      2 |1
|           5 | PLASMA               |      2 |2
4

1 に答える 1