3
我正在處理「未售出產品」的存儲過程。未交叉連接的未售出產品查詢?
下面是我迄今採取的方法的總結。
注意:生產中最多會有7種產品,銷售表約有18,000種,相對於當前的規模而言增長緩慢。
我的問題是:是否有另一種方法可以考慮避免爆炸交叉連接的潛在陷阱?
declare @products table (
productName varchar(50)
)
declare @customers table (
customerName varchar(50)
)
declare @sales table (
customerName varchar(50),
productName varchar(50)
)
insert into @products values ('Product1'), ('Product2')
insert into @customers values ('Customer1'), ('Customer2')
insert into @sales values
('Customer1', 'Product1')
,('Customer1', 'Product2')
,('Customer2', 'Product1')
-- want a row for each customer and each product they
-- have not been sold
select *
from @customers C
cross join @products P
where not exists(select productName
from @sales S
where S.customerName = C.customerName and
S.productName = P.productName)
有一張未售出的產品和已售出產品的表格。 – Laurence
這很有趣...沒有想到這個 –
但他需要每個客戶,不只是「沒有人購買這個項目」,而是「這傢伙還沒有購買這三個項目」。 –