読者です 読者をやめる 読者になる 読者になる

Fight the Future

何かを始めたら、半分成功したのと同じ

PostgreSQLでconnectby関数を使う

db

階層構造をSQLで取得するときはWith句を使えばいいんだけど、
PostgreSQLは次の8.4からしかWith句に対応していない。


Oracleにあるのと同じconnectby関数が利用できる。
だけどデフォルトではその関数は入っていない。
%POSTGR_HOME%\share\contrib\tablefunc.sqlを適用するとconnectby関数を使用できるようになる。

psql -Uユーザー名 -W < tablefunc.sql

ログ。

SET
CREATE FUNCTION
CREATE FUNCTION
CREATE TYPE
CREATE TYPE
CREATE TYPE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION

(追記)こんなSQLになる。

SELECT   *
FROM     connectby(  
                  'tableName',  
                  'keyColumnName',  
                  'parentColumnName',  
                  rootKeyValue,  
                  0  
         ) AS t( 
                  key VARCHAR,  
                  parentKey VARCHAR,  
                  level INT 
         )