首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite -如何从另一个值中减去一个值

SQLite -如何从另一个值中减去一个值
EN

Stack Overflow用户
提问于 2020-06-20 08:19:59
回答 2查看 149关注 0票数 1

我有一个包含3个表的数据库: tblCustomers、tblBookings、tblFlights。

在订票表中,我有每个航班的机票销售数量,在航班表中有每个航班的容量。我想还剩下的每班机票的数量。我尝试过从票中减去容量,但是语法不正确,我知道我已经创建了一个连接,它没有返回正确的信息。

我试过:

代码语言:javascript
复制
SELECT *, (Capacity - Tickets)
from tblFlights, tblBookings
where (Capacity - Tickets)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-20 08:24:29

您实际上是交叉连接表,但是您应该根据表的相关列执行INNERLEFT连接,我认为它们必须有类似于flight_id的名称:

代码语言:javascript
复制
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子句,因为您在代码中使用它。

如果tblFlightstblBookings的关系不是1:1,那么还需要聚合:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2020-06-20 08:24:08

您的语法应该如下所示:

代码语言:javascript
复制
SELECT *, (Capacity - Tickets) as Remaining
    from tblFlights Tf, tblBookings Tb 
    where Tb.id = Tf.id and (Capacity - Tickets) > 0

还可以使用join语句:

代码语言:javascript
复制
SELECT *, (Capacity - Tickets) as Remaining
    from tblFlights Tf
    join tblBookings Tb on (Tf.id = Tb.id)
    where (Capacity - Tickets) > 0

您最初创建的是两个表之间的排列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62483360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档