这个问题很难解释,我什至不知道如何正确地称呼它,所以我事先对此表示歉意。
我对产品的看法如下:
产品
ProductId
产品名称
在我的数据库中,我有一个价目表和一个价目表产品表。一个价目表的标题可能是“第1级客户”,相应的RatecardProduct记录将是该特定价目表的产品价格。它可能仅包含少数几种产品的价格,而并非全部。
价目表
RatecardId
RatecardName
RatecardProduct
RatecardProductId
RatecardId
产品编号
单价
问题是我需要创建一个显示所有价目表的所有产品的视图。如果价目表/产品组合在我的价目表产品表中没有对应的单价,则应显示NULL或0。
假设我有10个产品和4个价目表;该视图将包含40条记录,即使RatecardProduct表完全为空
之所以需要这样做,是因为我在查看价目表时填充了gridview,并且我不想为了确定是否有相应的价格而对每一行进行往返。
非常感谢您。
答案 0 :(得分:3)
生成所有行。然后使用left join
引入数据:
select p.*, r.*, coalesce(rp.unitprice, 0) as unitprice
from products p cross join
ratecards r left join
ratecardproduct rp
on rp.productid = p.productid and rp.ratecardid = r.ratecardid;
或者如果您想使用coalesce()
,请不要使用NULL
。