首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

关于SQL子查询更新有关问题,求大神指导

2012-12-22 
关于SQL子查询更新问题,求大神指导最近做一个功能,具体是这样:订单审核,然后订单明细的每条记录的价格会自

关于SQL子查询更新问题,求大神指导
最近做一个功能,具体是这样:订单审核,然后订单明细的每条记录的价格会自动更新到报价表的报价,下面只显示更新代码:
update XiaoShou_BaoJia set 
JiaGe= (SELECT      XiaoShou_DingDanMingXi.DanJia
FROM         XiaoShou_DingDanMingXi LEFT OUTER JOIN 
XiaoShou_DingDan ON XiaoShou_DingDanMingXi.DingDanID=XiaoShou_DingDan.DingDanID LEFT OUTER JOIN 
XiaoShou_BaoJia ON XiaoShou_BaoJia.WuPinID = XiaoShou_DingDanMingXi.WuPinID AND
XiaoShou_BaoJia.GuiGeID = XiaoShou_DingDanMingXi.GuiGeID AND
XiaoShou_DingDan.KeHuID = XiaoShou_BaoJia.KeHuID
 
WHERE     XiaoShou_DingDan.DingDanID = 4 AND XiaoShou_BaoJia.JiaGe IS NOT NULL)

WHERE     XiaoShou_DingDan.DingDanID = 4 --不能通过执行

最后那个WHERE语句因为XiaoShou_BaoJia 没有关联XiaoShou_DingDan,所以不能通过,如果没有这个条件语句,那么就会更新报价表里的所有报价,但我不懂怎么把这个语句写上去,应该有方法的,所以在这求助。
[最优解释]
试试:

update XiaoShou_BaoJia set 
 JiaGe=XiaoShou_DingDanMingXi.DanJia
 FROM         XiaoShou_DingDanMingXi LEFT OUTER JOIN 
 XiaoShou_DingDan ON XiaoShou_DingDanMingXi.DingDanID=XiaoShou_DingDan.DingDanID LEFT OUTER JOIN 
 XiaoShou_BaoJia ON XiaoShou_BaoJia.WuPinID = XiaoShou_DingDanMingXi.WuPinID AND
 XiaoShou_BaoJia.GuiGeID = XiaoShou_DingDanMingXi.GuiGeID AND
 XiaoShou_DingDan.KeHuID = XiaoShou_BaoJia.KeHuID
  
 WHERE     XiaoShou_DingDan.DingDanID = 4 AND XiaoShou_BaoJia.JiaGe IS NOT NULL

[其他解释]
引用:
最近做一个功能,具体是这样:订单审核,然后订单明细的每条记录的价格会自动更新到报价表的报价,下面只显示更新代码:
update XiaoShou_BaoJia set 
JiaGe= (SELECT      XiaoShou_DingDanMingXi.DanJia
FROM         XiaoShou_DingDanMingXi LEFT OUTER JO……


能不能给出表结构和测试数据以及期待的结果
[其他解释]
update XiaoShou_BaoJia set JiaGe= XiaoShou_DingDanMingXi.DanJia
 FROM   XiaoShou_DingDanMingXi LEFT OUTER JOIN 
 XiaoShou_DingDan ON XiaoShou_DingDanMingXi.DingDanID=XiaoShou_DingDan.DingDanID LEFT OUTER JOIN 
 XiaoShou_BaoJia ON XiaoShou_BaoJia.WuPinID = XiaoShou_DingDanMingXi.WuPinID AND
 XiaoShou_BaoJia.GuiGeID = XiaoShou_DingDanMingXi.GuiGeID AND
 XiaoShou_DingDan.KeHuID = XiaoShou_BaoJia.KeHuID
  
 WHERE     XiaoShou_DingDan.DingDanID = 4 AND XiaoShou_BaoJia.JiaGe IS NOT NULL
 and     XiaoShou_DingDan.DingDanID = 4
[其他解释]
update XiaoShou_BaoJia 
      set JiaGe= XiaoShou_DingDanMingXi.DanJia
FROM   XiaoShou_DingDanMingXi 
      LEFT OUTER JOIN 
          XiaoShou_DingDan ON XiaoShou_DingDanMingXi.DingDanID=XiaoShou_DingDan.DingDanID
 LEFT OUTER JOIN 


 XiaoShou_BaoJia ON XiaoShou_BaoJia.WuPinID = XiaoShou_DingDanMingXi.WuPinID AND
 XiaoShou_BaoJia.GuiGeID = XiaoShou_DingDanMingXi.GuiGeID AND
 XiaoShou_DingDan.KeHuID = XiaoShou_BaoJia.KeHuID
  
 WHERE     XiaoShou_DingDan.DingDanID = 4 AND XiaoShou_BaoJia.JiaGe IS NOT NULL
 and     XiaoShou_DingDan.DingDanID = 4

改下红字部分

热点排行