从两个表中显示价格而不消除产品

时间:2014-04-28 20:30:42

标签: sql sql-server-2008

我有这个查询:

 select ItemName,FrgnName,OnHand,Price as Regular_Price from ITM1, OITM 
 where exists
 (select null from OSCN 
 where oitm.ItemCode=oscn.ItemCode
 and itm1.ItemCode=oscn.ItemCode
 and oscn.CardCode='test'
 and itm1.PriceList=2)

此查询是以正常价格(7种产品)获取与特定客户相关联的所有产品 现在我想添加第四个表(sprecial_prices表),其中只有6个产品具有该客户的特殊价格。
问题是,如果我将special_price表添加到查询中,我的结果将是 6个产品,并且我想显示所有客户的项目,即使其中一个是0。
谢谢

1 个答案:

答案 0 :(得分:1)

我认为你的查询可以用这种方式用SQL92语法重写:

select
   i.ItemName,FrgnName,o.OnHand,i.Price
from
  ITM1 i
  inner join OITM o on i.ItemCode = o.ItemCode
  inner join OSCN os on o.ItemCode = os.ItemCode
where
  o.CardCode = 'test'
  and i.PriceList = 2

要添加第4个表,要使用左连接,以便即使第4个表中没有结果,也会显示所有记录:

select
   i.ItemName,FrgnName,o.OnHand,i.Price
from
  ITM1 i
  inner join OITM o on i.ItemCode = o.ItemCode
  inner join OSCN os on o.ItemCode = os.ItemCode
  left join special_price sp on o.ItemCode = sp.ItemCode  --or whatever column joins to special_price
where
  o.CardCode = 'test'
  and i.PriceList = 2