現在、賞品一覧に対して1つだけ価格を表示したいのですが、
なかなかクエリが決まらず困っています。
どなたかお力添えをお願い致します。
■現状
賞品マスタ、賞品情報マスタ、賞品価格マスタという3つのテーブルがあり、
1つの賞品に対して、新しく価格ができるたびに賞品情報マスタと賞品価格マスタが1つずつ作成されていきます。
賞品情報マスタは賞品マスタIDを持っており、賞品価格マスタは賞品情報マスタIDを持っています。
賞品価格マスタには、最新価格であればたつ最新価格フラグを持っています。
パターン1:現在日時が20161201の場合に下記のような2つの価格がある場合は、現在適応範囲の価格1を表示します。
価格1:100円 開始日20160401 終了日20170331
価格2:200円 開始日20170401 終了日99991231
賞品一覧表示結果:100円
パターン2:現在日時が20161201だが、価格が未来から始まるものしかない場合はその価格を表示します。
価格1:300円 開始日20170401 終了日99991231
賞品一覧表示結果:300円
1つのViewを用いてこのように制御したいのですが、
どう書いたらいいかわからず困っています。
sql
1select * 2from 賞品マスタ a 3inner join 賞品情報マスタ b on a.id = b.賞品id 4inner join 賞品価格マスタ c on b.id = c.賞品情報id 5where sysdatetime() between 価格開始日 and 価格終了日
こう書くと、未来価格しかないものがこぼれてしまいます。
かといって
sql
1select * 2from 賞品マスタ a 3inner join 賞品情報マスタ b on a.id = b.賞品id 4inner join 賞品価格マスタ c on b.id = c.賞品情報id 5where (sysdatetime() between c.価格開始日 and c.価格終了日) 6or c.価格開始日 > sysdatetime()
と書くと、未来価格と現在価格どちらもある場合に、1つの賞品に対して2つの価格が出てしまうのでNGです。
現在価格がある場合は現在価格を、未来価格のみの場合は未来価格を表示したいです。
どなたか宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/22 05:22