sql语句,一个表中的值等于另一个表两列的乘积

第一个表叫 ”订购单“ 结构为 “订购单号 金额“

第二个表叫 ”订购单明细“ 结构为 ”订购单号 单价 数量“
要求 金额=单价*数量,sql语句这么写为什么不对
update book.订购单 set 金额=(select book.订购单明细.单价 from book.订购单明细) *( select book.订购单明细.数量 from book.订购单明细) where (book.订购单.订购单号= select book.订购单明细.订购单号 from book.订购单明细)
book是模式

第1个回答  推荐于2017-09-11
SELECT a.订购单号 , a.金额
from 订购单 a , 订购单明细 b
where a.订购单号 = b.订购单号
and a.金额 = b.单价* b.数量追问

select 订购单.订购单号, 订购单.金额
from =订购单,订购单明细
where 订购单.订购单号=订购单明细.订购单号
and 订购单.金额=订购单明细.单价*订购单明细.数量

我按照你的写了,语法没问题,可是值没有更新,不需要用update吗?

追答

update 订购单 a set 金额 = (SELECT a.金额
from 订购单 a , 订购单明细 b
where a.订购单号 = b.订购单号
and a.金额 = b.单价* b.数量)

追问

update 订购单 set 金额=( select 订购单.金额
from 订购单,订购单明细
where 订购单.订购单号=订购单明细.订购单号
and 订购单.金额=订购单明细.单价*订购单明细.数量)

执行以后,原来表中的金额全部更新成NULL了,单价和数量都有值

追答

update 订购单 set 金额=( select 订购单.金额
from 订购单,订购单明细
where 订购单.订购单号=订购单明细.订购单号
and 订购单.金额=订购单明细.单价*订购单明细.数量)
可以加多where 条件来控制!

本回答被提问者采纳
第2个回答  2014-11-18
你这样写法,上面的乘法都是两个子查询,都是查出来多个行相乘是乘不了的。追问

那应该怎么写呢?麻烦详细说一下,谢谢!

相似回答