2015-11-04 71 views
0

当他们有两个成年人和一个孩子正在预订时,我给用户打折时遇到了很多困难......输出文本是说如标题所示。虽然我意识到这个问题,但我不确定我如何解决它以使结果更加独特。'子查询返回多于一行'使用案例

仅供参考,价格来自不同的表格,但其他一切都在预订中。

任何帮助表示赞赏,并在此先感谢

UPDATE BOOKING SET TotalCost= 
(SELECT SUM(

CASE WHEN NumAdults = 2 AND NumChilds = 1 THEN 
(NumAdults*(SELECT Cost FROM prices WHERE AgeType = 'Adult')) 
+ 
(NumChilds*(SELECT Cost FROM prices WHERE AgeType = 'Child'/2)) 


ELSE 
(NumAdults*(SELECT Cost FROM prices WHERE AgeType = 'Adult')) 
+ 
(NumChilds*(SELECT Cost FROM prices WHERE AgeType = 'Child')) 
END 
)) 
WHERE BookID = 1 
+0

考虑提供创建和插入语句,以及期望的结果 – Strawberry

回答

1

的这个(全次数NumAdults*(SELECT Cost FROM prices WHERE AgeType = 'Adult')

应该(NumAdults*(SELECT SUM(Cost) FROM prices WHERE AgeType = 'Adult')

在那里,你用resultset乘以Numadults

希望这有助于