使用COUNT()更新容量



我有三个表,它们由以下连接

飞行F,预订R,飞机

其中F.飞机序列号=A.飞机序列号F.FlightCode=R.FlightCode

在飞机表中,有一列用于存储任何给定飞机的最大容量。

在预订表中,存储了乘客的记录,他们乘坐的航班基于航班代码

在飞行表中,有一列用于存储任何给定飞机的剩余容量,每个航班都由其飞行代码唯一确定

因此,我想找到一种方法,通过获取原始最大容量的值来更新剩余容量,然后通过对FlightCode在预订表中出现的次数进行COUNT((来获得剩余容量

到目前为止,我已经完成了前半部分的工作(将RemCapacity设置为最初的最大容量(

UPDATE FLIGHT F
SET F.RemCapacity = (SELECT Capacity FROM airplane 
WHERE AIRPLANE.airplaneserialnum = F.airplaneserialnum);

然而,我一直在努力减去的预订数量

-- to get the count for number of times the FlightCode appears
SELECT COUNT(*) FROM reservation group by flightcode
UPDATE FLIGHT F
SET F.RemCapacity = F.RemCapacity - 
(SELECT COUNT(*) FROM reservation group by flightcode ) WHERE  F.FlightCode = R.FlightCode;
(returns %s invalid identifier SQL error)

如果可能的话,我如何将两半组合成一个查询?

不完全确定,但我认为这可能会帮你,在一个语句中完成所有工作:

UPDATE FLIGHT F
SET F.RemCapacity = (SELECT Capacity FROM airplane 
WHERE AIRPLANE.airplaneserialnum = F.airplaneserialnum) - 
(SELECT COUNT(*) FROM reservation r WHERE  F.FlightCode = R.FlightCode);

最新更新