SQL查询 - 显示所有可用且不可用的ChairNo

时间:2015-12-07 16:12:40

标签: mysql sql select join where

有一个小型电影项目,我一直在努力,并希望在一个相当先进的SQL查询上提供一些帮助 - 我是一个完整的noob atm。

3 个答案:

答案 0 :(得分:0)

这是你的意思吗?

select SeatNo, 1 as available from Chair where SeatNo in (select SeatNo from Booki1)

Union 

select SeatNo, 0  as available from Chair where SeatNo not in (select SeatNo from Booki1)

答案 1 :(得分:0)

您的查询有点困惑。椅子总是在那里,因此外表连接这个表是没有意义的。将它放在FROM子句中,然后外连接预订(或在子查询中访问它们)。

select 
  seatno, 
  case when seatno in (select seatno from bookli1 where ddate = ... and ttime = ...) 
  then 0 else 1 end as available
from chair
order by seatno;

答案 2 :(得分:0)

你的左连接应该可以工作,但是你开始使用不正确的表作为基础。您的主席(所有可能的座位列表)应该是第一个表,然后LEFT-JOIN到实际预订的那些。 Left-Join =我想要LEFT(第一个)表中的记录,而不管右边的匹配(第二个表)。

select 
      Chair.SeatNo,
      (case when Show.DDate is null then 1 else 0 end) available
   from 
      chair
         left join booki1 
            on Chair.SeatNo = booki1.SeatNo
            left join show
               on booki1.DDate = Show.DDate
              AND booki1.TTime = Show.TTime
              AND booki1.DDate = *insert show id here*;

请注意,如果您只在DATE查询,但不能同时查询日期和时间,那么您的主持人"座位可能会错误地显示为不可用,因为它可能会在下午6点出现,但不会在晚上9点出现。