你能帮我找到一个解决我的查询问题的方法吗? 我已经被困在这个问题上一个星期了,所以我决定试着寻求帮助,学点东西。 我正在使用MySQL数据库。
现在我有一个没有“搜索功能”的表。
SELECT
r.rId,
r.rName,
r.rPrice,
b.capacity
FROM
room r,
(SELECT roomId, SUM(bCapacity) AS capacity FROM bed GROUP BY roomId) AS b
WHERE r.rId = b.roomId;
这就是结果:
我想显示表中所有没有入住和退房日期的房间。
我有:
2输入:
3表:
现在我有了一个查询,它检查在某个范围内是否有任何房间被预订。 如果日期不一致,它会把用RoomID预订的桌子还给我。
SELECT
roomId,
bCheckIn,
bCheckOut
FROM booking
WHERE (bCheckOut > ? AND bCheckIn <= ?) AND bStatus = 'Upcoming' OR 'Archived';
先? 入住日期和第二? 是签出日期输入。 在此,我传递上述日期,并返回在该日期范围内采取的房间。
这就是结果:
摘要
有没有可能将这两个查询组合在一起,这样我将只得到一个表,第一个查询数据,但从第二个查询中排除那些被占用的房间? 我的查询合并失败。
我认为您希望不存在
:
select r.*
from rooms r
where not exists (select 1
from booking b
where b.roomid = r.id and
b.checkindate < :end_date and
b.checkoutdate >= :start_date
);
如果您正在学习SQL,您应该学习适当的,显式的,标准的,可读的join
语法。 不要在from
子句中使用逗号。