UPDATE和SELECT表串联

时间:2018-06-24 16:13:06

标签: mysql ms-access concatenation

我的任务是:选择所有有利可图的航班。 transportation是有关航班的一般信息。 ticket包含有关许多票证及其费用的信息。因此,如何串联UPDATESELECT表以便仅查找那些profit大于0的行。UPDATE表应该先行,因为profit字段为空

UPDATE transportations
set profit =((transportations.ticket.cost* 
(transportations.ticket.sold_q+transportations.ticket.booked_q))-(0.2* 
transportations.plan_oil))
WHERE profit is null

SELECT profit FROM transportations
WHERE profit >0
ORDER BY profit

1 个答案:

答案 0 :(得分:0)

通常不建议保存计算的数据。而且您似乎正在使用多值字段。如何保存每张票的利润计算?为每个航班记录节省利润将需要汇总机票计算。使用UPDATE保存聚合数据将导致“不可更新”错误。

如果您想返回每张彩票的利润计算,并且仅返回大于0的利润计算,请尝试:

SELECT *, (ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil) AS Profit
FROM transportations
WHERE (ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil) > 0;

如果要考虑每个航班的总利润,请尝试:

SELECT FlightID, Sum((ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil)) AS Profit
FROM transportations
GROUP BY FlightID
HAVING Sum((ticket.cost * (ticket.sold_q + ticket.booked_q))-(0.2* plan_oil)) > 0;