どの注文に有効なプロモーション コードがあるかを確認するためのクエリを作成しようとしています。プロモコードは、特定の日付とオプションで特定のパッケージの間でのみ有効です。
これがどのように機能するかを説明することさえ困難です(以下の疑似コードを参照)が、基本的にプロモーションコードに関連付けられたパッケージがある場合、注文にはそれらのパッケージのいずれかが含まれ、有効な日付範囲内にある必要があります。有効な日付範囲内であること。
「PrmoPackage行が存在する場合」全体が本当に私をうんざりさせており、たくさんのUnion
sなしでこれを行うことができるはずだと感じています。(この時点でそれが簡単になるかどうかさえわかりません...)
誰でもクエリのアイデアはありますか?
if `OrderPromoCode` = `PromoCode`
then if `OrderTimestamp` is between `PromoStartTimestamp` and `PromoEndTimestamp`
then if `PromoCode` has packages associated with it
//yes
then if `PackageID` is one of the specified packages
//yes
code is valid
//no
invalid
//no
code is valid
注文:
OrderID* | OrderTimestamp | PackageID | OrderPromoCode
1 | 1/2/11 | 1 | ABC
2 | 1/3/11 | 2 | ABC
3 | 3/2/11 | 2 | DEF
4 | 4/2/11 | 3 | GHI
プロモーション:
PromoCode* | PromoStartTimestamp* | PromoEndTimestamp*
ABC | 1/1/11 | 2/1/11
ABC | 3/1/11 | 4/1/11
DEF | 1/1/11 | 1/11/13
GHI | 1/1/11 | 1/11/13
プロモーションパッケージ:
PromoCode* | PromoStartTimestamp* | PromoEndTimestamp* | PackageID*
ABC | 1/1/11 | 2/1/11 | 1
ABC | 1/1/11 | 2/1/11 | 3
GHI | 1/1/11 | 1/11/13 | 1
望ましい結果:
OrderID | IsPromoCodeValid
1 | 1
2 | 0
3 | 1
4 | 0