有一个小型电影项目,我一直在努力,并希望在一个相当先进的SQL查询上提供一些帮助 - 我是一个完整的noob atm。
答案 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点出现。