Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

IT勉強会での初プレゼンなどお助けします!

勉強会でスピーカーをやりたいけど、プレゼンが初めて、苦手という方に無償でコーチできます。スライドのレビューや録画したリハへのアドバイスなどなど。Twitter@jyukutyoまでメンションでもDMでもお気軽にご連絡ください。

私はIT講師の経験があり、プレゼンはデブサミやJJUG CCCなど200人規模の経験が豊富で最大800人の前でプレゼンしました。海外ではDevoxxUSで。デブサミ2017では公募スピーカー1位、デブサミ関西2012アワードで5位となりました。

PostgreSQLでconnectby関数を使う

階層構造を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 
         )