- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PostgreSQL/SQL/階層/3階層構造のテーブルで一番上の親を参照する へ行く。
- 1 (2011-04-14 (木) 11:39:07)
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;