繁体   English   中英

如何在另一个表中显示每个半相关记录的所有记录?

[英]How do I show all records from one table for each semi-related record in another?

这个问题很难解释,我甚至不知道如何正确地标题,所以我事先对此道歉。

我对产品的看法如下:

产品
产品编号
产品名称

在我的数据库中,我有一个价目表和一个价目表产品表。 价目表可以标题为“第1层客户”,相应的RatecardProduct记录可以是该特定价目表的产品价格。 它可能只包含少数产品的价格,而不是所有产品的价格。

Ratecard
RatecardId
RatecardName

RatecardProduct
RatecardProductId
RatecardId
ProductId UnitPrice

问题是我需要创建一个显示所有价目表的所有产品的视图。 如果价目表/产品组合在我的ratecardproduct表中没有相应的单价,则应显示NULL或0。

想象一下,我有10个产品和4个价目表; 即使RatecardProduct表完全为空,视图也将包含40条记录

我需要这样做的原因是因为我在查看价目表时填写了gridview,我不想为每一行进行往返以确定是否有相应的价格。

非常感谢你提前。

生成所有行。 然后使用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;

或者,如果您想要NULL请不要使用coalesce()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM