postgresql9.5で実行していますがマテビューは9.3以上、with句はもっと昔から使えます。 コメントやカテゴリの管理などを行う場合に使うtree構造をDBで管理するのは結構面倒くさい。 ここのnative treeの所に幾つか実装方法が書いてあるがどれもこれも結構面倒というか難しい。 一番直感的に分かりやすい実装方法はやはり親IDを持つ方法だろう。ただ、JOINを使って階層を辿ろうと思うと大変なことになる。 そもそも階層に限りが無いのでJOINを何回行えばいいかもわからなかったりするので、条件分岐も必要になってくる。 そこでWith句。しかもRECURSIVE。 例えば下記の様なテーブルとレコードがあるとする。 CREATE TABLE items ( id INT PRIMARY KEY, parent_id INT, name TEXT NOT NULL ); ALTER