分别有3个表品牌,产品和品牌产品。表格有以下结构。
Brand : id,BrandName
Product : id,ProductName
BrandProduct :id,Brandid,Productid,Prize,RetailerName
我想显示产品名称,奖品和零售商名称。这是我的询问。
select ProductName,Prize,RetailerName from BrandProduct BP
inner join Product P
on P.id = BP.Productid
当用户选择品牌时,只会出现该品牌记录。所以我更改了一个查询。它运作正常
create proc_sample
@Brandid int = null
as
begin
select ProductName,Prize,RetailerName from BrandProduct BP
inner join Product P
on P.id = BP.Productid
inner join Brand B
on B.id = BP.Brandid
where (@Brandid is null or BP.Brandid= @Brandid)
End
当用户不选择品牌时,品牌的加入不应该来。任何想法?我知道动态sql进入图片。动态sql的替代品
答案 0 :(得分:1)
无需加入Brand表,因为BrandProduct表包含BrandId。
select ProductName,Prize,RetailerName from BrandProduct BP
inner join Product P
on P.id = BP.Productid
where (@Brandid is null or BP.Brandid = @Brandid)