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 点放映。
我一直在做一个小型电影院项目,希望在相当高级的 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 点放映。