我有一个包含3个表的数据库: tblCustomers、tblBookings、tblFlights。
在订票表中,我有每个航班的机票销售数量,在航班表中有每个航班的容量。我想还剩下的每班机票的数量。我尝试过从票中减去容量,但是语法不正确,我知道我已经创建了一个连接,它没有返回正确的信息。
我试过:
SELECT *, (Capacity - Tickets)
from tblFlights, tblBookings
where (Capacity - Tickets)发布于 2020-06-20 08:24:29
您实际上是交叉连接表,但是您应该根据表的相关列执行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和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发布于 2020-06-20 08:24:08
您的语法应该如下所示:
SELECT *, (Capacity - Tickets) as Remaining
from tblFlights Tf, tblBookings Tb
where Tb.id = Tf.id and (Capacity - Tickets) > 0还可以使用join语句:
SELECT *, (Capacity - Tickets) as Remaining
from tblFlights Tf
join tblBookings Tb on (Tf.id = Tb.id)
where (Capacity - Tickets) > 0您最初创建的是两个表之间的排列。
https://stackoverflow.com/questions/62483360
复制相似问题