日期:2014-05-17  浏览次数:20582 次

关于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