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

SQL Query - to show all ChairNo's which are available and unavailable

我一直在做一个小型电影院项目,希望在相当高级的 sql 查询上得到一些帮助 - 我是一个十足的菜鸟 atm。

你是这个意思吗?

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)

您的查询有点混乱。椅子总是在那里,所以外连接这个 table 是没有意义的。改为将其放在 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;

您的左连接应该有效,但您以不正确的 table 作为基础开始。您的椅子(所有可能座位的列表)应该是第一个 table,然后 LEFT-JOIN 到实际预订的座位。 Left-Join = 我想要左边的记录(第一个)table,不管右边的匹配项(第二个 table)。

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,而不是 DATE 和 TIME,您的 "Chair" 座位可能会错误地显示为 NOT available,因为它可能在下午 6 点放映时有人,但没有被占用的时间晚上 9 点放映。