Oracle SQL跨表

时间:2017-10-06 14:17:06

标签: sql oracle

对SQL和IT界来说很新,在寻求帮助之前总是做很多工作,但这次我很难过。

我有三张桌子:

enter image description here

所以我试图通过执行以下操作来更新“payment_owed”表: 获取food_id和quantity,然后使用food_id将数量乘以成本。

我迄今为止做得最好的是表格上的自然联接,并试图总结每个ID的数量*成本

我对更新特定客户的理解:

update customer
set payment_owed = (select <quantity>) * (select <cost>)
where cust_no = 1;

如果我不在正确的论坛上,或者有更好的地方提出这些问题请告诉我,谢谢您的时间!

1 个答案:

答案 0 :(得分:2)

简单地:

update customer
set payment_owed = (SELECT SUM(o.cost*s.quantity) 
                   FROM order o JOIN session s ON s.food_id = o.food_id         
                   WHERE s.cust_no = customer.cust_no)
where cust_no = 1;

无论如何,你会在桌面上的每次更改后更新吗?如何使用视图:

CREATE VIEW my_view AS
SELECT cust_no, SUM(o.cost*s.quantity) 
FROM order o 
JOIN session s ON s.food_id = o.food_id
GROUP BY cust_no;