SELECT
s.SeatNo, BOOKING_ID
FROM
SEAT s
LEFT OUTER JOIN
BOOKING b ON (s.SeatNo = b.SeatNo) AND (plane_id = 'BEY101');
每架飞机有5架飞机和150个座位。我想显示航班的所有座位(150)和预订的座位数(假设为50)(即结果集的第一列为150,第二列为50)。
答案 0 :(得分:2)
您的查询似乎非常接近您要求的内容。我能想到有一件事是错的。那就是plane_id
表中seat
。也许这个查询可以解决您的问题:
select s.SeatNo, b.BOOKING_ID
from SEAT s LEFT OUTER JOIN
BOOKING b
ON s.SeatNo = b.SeatNo
where s.plane_id = 'BEY101';
Left outer join
以非常具体的方式工作。无论on
子句的计算结果为true还是false,第一个表中的每一行都在结果集中。这甚至适用于第一张桌子上的条件。因此,在执行left outer join
时,第一个表上的on
条件无效。这些条件应该在where
条款中。
答案 1 :(得分:-1)
请在下面试试,可能会丢失b.BOOKING_ID,
select s.SeatNo,b.BOOKING_ID
from SEAT s
LEFT OUTER JOIN BOOKING b ON(s.SeatNO=b.SeatNO) and (plane_id='BEY101')