次の型テーブルを考えると、
create table products (
productid varchar(10),
make varchar(10),
age varchar(10),
colour varchar(10),
category1 varchar(10),
category2 varchar(10),
caregory3 varchar(10)
)
商品のリスト (すべてのフィールド) を選択したいのですが、商品は 1 つにつき 1 つだけである必要がありますmake
。それぞれに選択される製品はmake
、一連のルールを順番に適用して決定する必要があります。例: - 特定の に属する赤い製品が存在する場合、make
この製品を選択します。-make
まだ表示されていないすべての製品については、2 年未満の製品を選択してください。-make
まだ表されていないすべてについて、カテゴリ 1 の x の値である製品を選択してください - 排泄物
これを行うには、選択した製品のメモリ/一時テーブルを維持し、潜在的な製品の製造元がまだ含まれていない場合にのみ、このテーブルに追加の製品を挿入します。insert select into
メモリ/一時テーブルがいっぱいになるように、ルールごとに1 つ適用します。例えば。
insert into #temp
select productid, make, age, colour, category1, category2, caregory3
from products a
where *rule applies*
and a.make not exists in (select make from #temp where a.make = #temp.make)
ただし、これはあまりエレガントではないようです。
注: これは実際の問題を簡略化したものです。実際の問題では、各選択レベルで有効な製品は 1 つだけです。