SQL LEFT OUTER JOIN无法正常工作

时间:2014-08-03 17:26:09

标签: sql join outer-join

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)。

2 个答案:

答案 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')