Java SQL查找未完全占用房间的特定日期

Java SQL查找未完全占用房间的特定日期,java,sql,datetime,sum,subquery,Java,Sql,Datetime,Sum,Subquery,我有两张桌子: 有这样一张桌子的人: 表名保留: Name Room Seats Date John 101 20 11/22 表格名称房间: Name Seats 101 30 202 40 SELECT * FROM Reservations WHERE date = '2020-11-22' AND SELECT Reservations.Room FROM Reservations WHERE Reservations.Room NOT IN(SELECT Room.N

我有两张桌子:

有这样一张桌子的人: 表名保留:

Name Room Seats Date
John 101  20    11/22

表格名称房间:

Name Seats
101  30
202  40

SELECT *
FROM Reservations
WHERE date = '2020-11-22' AND
SELECT Reservations.Room
FROM Reservations
WHERE Reservations.Room NOT IN(SELECT Room.Name FROM Room)

我试过上面的说法,但不起作用。我希望该命令返回某个日期中未使用的所有房间。应该是202房间。就是这样。

我知道您想要在指定日期有座位的房间。一个选项使用子查询进行筛选:

select ro.*
from rooms ro
where ro.seats > (
    select coalesce(sum(re.seats), 0)
    from reservations re
    where re.room = ro.name and re.date = '2020-11-12'
)
另一方面,如果您想要在给定日期内完全没有预订的房间,请使用
不存在

select ro.*
from rooms ro
where not exists (
    select 1
    from reservations re
    where re.room = ro.name and re.date = '2020-11-12'
)

请提供示例数据和您想要实现的逻辑的清晰解释。我已经做了。谢谢:)我不知道你为什么还要增加座位号。我想同一个房间和日期可能会有几个预订。但如果不是这样的话也没什么坏处,查询仍然像预期的那样工作。这个语句不起作用。你能修改一下我需要的吗。我试着修改它,但它不起作用。@Jabbaa11:你为什么不想要101房间的结果呢?座位还没有满(有30个座位,只有20个有人)。我很抱歉。这很好用。我写错了一篇文章。非常感谢你。