[pgsql-jp: 24996] Re: レコードをひとつだけ取り出すViewの作り方

Minoru Fukuda fukuda @ kinol.co.jp
2002年 2月 27日 (水) 17:31:10 JST


こんにちは、福田です。

加藤さん、どうもありがとうございました。

教えていただいた方法は、私も考えてみたのですが、
おっしゃるとおり「同一時間というデータが発生したら?」と
いう問題があり、どうも釈然としないものがあります。

実際に格納されるレコードでは、「同一時間」というのは
ありえませんが、もうすこし格好いい SELECT 文が書けないかなあと
悩んでいたのです。


h-kato @ hokkaido.nsc-kk.co.jp wrote:
> 
> こんにちは。加藤です。
> 
> > ここで質問なのですが、下のように顧客の最終来店日と
> > そのときの tenpomei を表示する view を作るとすると
> > どのような形になるのでしょうか?
> >  kokyakuid | namae     |         hizuke         | tenpomei
> > -----------+-----------+----------------------------------
> >          1 | 'Aさん'   | 2002-03-27 16:02:00+09 | '駅前店'
> >          2 | 'Bさん'   | 2002-03-29 16:02:00+09 | '本店'
> 
> PostgreSQLを実行する環境を削除してしまったので未検証ですが、おそらく
> このようなSQLとなるのでは?(SELECT部のみ抜粋)
> 単純に、顧客ID毎に最大日付を取得しています。
> 他に、考慮が必要そうな点として
>  売上の無い顧客も対象とする?
>  来店テーブルに同一顧客ID、同一時間というデータが発生したら?
>  (家族会員が同じ顧客IDを使用しているケース等)
> というように、条件によって多少変わりますが...
> 
> select
>  k.kokyakuid,
>  k.namae,
>  r.hizuke,
>  r.tenpomei
> from kokyaku_table as k,raiten_table r
> where
>  (k.kokyakuid=r.kokyakuid) and
>  (r.hizuke=(
>   select max(r2.hizuke)
>   from raiten_table r2
>   where
>    (r2.kokyakuid=k.kokyakuid))
>  )
> 
> # 加藤

-- 
福田稔 Minoru Fukuda
fukuda @ kinol.co.jp
kinol interactive inc.
http://www.kinol.co.jp



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