- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 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;