database - SQLite - 如何从另一个值中减去一个值
问题描述
我有一个包含 3 个表的数据库;tblCustomers、tblBookings、tblFlights。
在 Bookings 表中,我有每个航班的售票数量,在 Flight 表中,我有每个航班的容量。我想退回每个航班的剩余票数。我尝试从票证中减去容量,但语法不正确,我知道我创建了一个 JOIN 并且它没有返回正确的信息。
我努力了:
SELECT *, (Capacity - Tickets)
from tblFlights, tblBookings
where (Capacity - Tickets)
解决方案
您实际上是在交叉连接表,但您应该根据表的相关列执行INNER
或连接,我相信这些列必须具有如下名称:LEFT
flight_id
select *, (f.Capacity - b.Tickets) tickets_left
from tblFlights f inner join tblBookings b
on b.flight_id = f.flight_id
where (f.Capacity - b.Tickets) > 0
我保留了该where
子句,因为您在代码中使用了它。
如果tblFlights
and的关系tblBookings
不是1:1
,那么您还需要聚合:
select f.*, (f.Capacity - coalesce(b.Tickets, 0)) tickets_left
from tblFlights f left join (
select flight_id, sum(Tickets) Tickets
from tblBookings
group by flight_id
) b on b.flight_id = f.flight_id
推荐阅读
- java - FireBase RecyclerView 水平滚动
- c++ - 如何静态断言 std::array 类成员在 C++11 中排序?
- c - 计算机如何区分类型?
- javascript - Javascript原型和修改原始对象
- alias - 如何更改默认的 oh-my-zsh 命令别名?
- spring - Spring数据、继承和mongodb
- android - 如何从 Firestore 获取随机文档并将它们显示在不同的 TextView 中?
- c# - Dotnet Core - 如何处理 RNGCryptoServiceProvider()
- windows - 如何使用 Powershell 调用命令?
- python - 用前向填充替换高值