各位大哥来看看这句SQL应如何写?(50分)

  • 主题发起人 主题发起人 梦菲斯
  • 开始时间 开始时间

梦菲斯

Unregistered / Unconfirmed
GUEST, unregistred user!
表a中有如下字段:
商品编号(Ware_Id),商品名称(Ware_Name),单价(Price)
表b中有如下字段:
商品编号(Ware_Id),临时单价(temp_Price)
商品编号已知,我想写这么一句SQL,实现当表b中该商品单价为空中,查询出表a的单价做为
商品的单价,如果表b中单价不为空,那么该商品的单价以表b的单价为主。
 
用存储过程
 
sql="select a.ware_id,a.ware_name,a.price,b.temp_price from a,b where a.ware_id=b.ware_id"
执行sql,然后判断,如
if b.temp_price<>"" then
price=b.temp_price
else
price=a.price
end if
显示的价格为price
以上的只是我的思路
 
to:Eva兄:
照你那样做,如果b.wareid为空的话,那么a中的也查不出来了,而且b.wareid为空的还
不少!
 
select a.ware_id,a.ware_name,nullif(b.temp_price,a.price) from a
left join b on a.ware_id=b.ware_id
或选出来比较
if fields[3]<=0 then fields[2]
 
楼上的可以
 
不行啊,nullif如果两个值相等,则返回空值!
我要的是如果b表price不为空,刚以b表的值为准!
还有,如果还有第三个表c,c中也有字段wareid和tax,如何才能同时也查询出tax的值!
 
SELECT a.Ware_Id,a.Ware_Name,(CASE WHEN b.temp_Price IS NULL THEN a.price ELSE b.temp_Price END) AS price
FROM a,b WHERE b.Ware_Id =* a.Ware_Id
 
sunys ,那个b.ware_id=* a.ware_id 的*是不是笔误啊
 
谢谢各位!sunys兄的方法完全正确!
 
sunys兄,还有一点,就是在WHERE中,如果表c中没有wareid,应该如何处理!
让你见笑了!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部