鑑於以下類型的表,如何在SQL中遞歸地構建產品列表?
create table products (
productid varchar(10),
make varchar(10),
age varchar(10),
colour varchar(10),
category1 varchar(10),
category2 varchar(10),
caregory3 varchar(10)
)
我想選擇的產品列表(所有字段),但應該每make
只有一個產品。爲每個make
選擇的產品應通過按順序應用一組規則來確定。例如, - 如果存在屬於特定make
的紅色產品,請選擇該產品。 - 對於尚未呈現的所有make
,請選擇一款不到兩年的產品。 - 對於所有make
尚未表示,選擇一個產品,它是X 1類價值 - 排泄物
您可以通過保持所選產品的一些內存/臨時表做到這一點,並插入到這個表中的其他產品,只有當它還不包含潛在的產品。通過爲每個規則應用一個insert select into
以便填充內存/臨時表。例如。
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)
但是,這看起來不太優雅。
注意:這是對實際問題的簡化。在實際問題中,每個選擇級別上只能有一個有效的產品。