[pgsql-jp: 38939] Re: <階層問い合わせ>Re:グループごとの最大値を持つデータを取得したい

chuuken kenkou ken_ken_1962 @ hotmail.com
2007年 11月 7日 (水) 14:48:20 JST


忠犬です。

SQL-99準拠の再帰クエリ(With句)が使えるようになれば、楽なのですけどね。
PostgreSQLでは、Oracleの階層問い合わせに近いconnectby()関数が
ありますが、利用を検討してみては?

http://www.thinkit.co.jp/free/marugoto/2/1/23/1.html

>海外@SE-PostgreSQLです。
>
> > こんにちは、中出と申します。
> >
>以下、余談:
>
>私が悩んでいる問題というのは、階層型データベースを実装する場合に
>必要となる機能で、機密レベルが異なれば同一の主キーに対して複数の
>タプルが存在し得るというテーブル(Polyinstantiationテーブル)を、
>どの様に実装するかという問題です。
>
>つまり、ユーザに見える主キーが (PK1, ... , PKn) であった場合、真の
>主キーは (LV, PK1, ... , PKn) になるというもので、見かけの主キーが
>同一のタプルは、ユーザが参照可能な最も高い機密レベルのものだけが見
>える必要があります。
>(*) LVは機密レベル。各タプルのシステム列に格納される。
>
>これの実装は SQL の書換えによって行なおうと思っているのですが、
>
>オリジナル構文:
>SELECT * FROM t WHERE a > 0;
>
>書換え後:
>SELECT * FROM t WHERE a > 0 and (LV, PK1, ... , PKn)
>   in (SELECT MAX(LV), PK1, ... ,PKn FROM t GROUP BY PK1, ... ,PKn);
>
>こういった場合に、もっとエレガントな書き方ってあるのでしょうか?
>--
>KaiGai Kohei

_________________________________________________________________
Pearl JamやAKON、Rihannaなど人気アーティストのライブ映像を無料配信中! 
http://msninconcert.msn.com/music/archive/ja-jp/archive.aspx 




pgsql-jp メーリングリストの案内