3階層構造で一番上の親を参照する

前提

|id(PK)|parent_id |1|0

 SELECT 
   COALESCE(
     CASE WHEN t3.parent_id = 0 THEN NULL ELSE t3.parent_id END, 
     CASE WHEN t2.parent_id = 0 THEN NULL ELSE t2.parent_id END, 
     CASE WHEN t1.parent_id = 0 THEN t1.id ELSE t1.parent_id END) AS top, 
     t1.id
 FROM 
   tbl t1
 LEFT OUTER JOIN
   tbl t2
 ON
   t1.parent_id = t2.id 
 LEFT OUTER JOIN
   tbl t3
 ON 
   t2.parent_id = t3.id
 ORDER BY top;

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS