我会尽量简短。我有一张带有“客人”的 table 和一张带有“房间”的 table 。每个客人都可以分配一个房间,但房间本身可以容纳不同数量的客人,在“空间”字段中指定。在用于注册新客人的表格中,我想创建一个可供选择的可用房间列表 - 一个仅显示仍可容纳至少一个人的房间数量的列表。
我的想法是简单地使用:
SELECT Rooms.Number
FROM Rooms
LEFT OUTER JOIN Guests ON Rooms.ID = Guests.Room
WHERE COUNT(Guests.Room) < Rooms.Space
ORDER BY Rooms.Number
但这不起作用。我想也许比较两个字段是问题所在,所以我也尝试了这样的 WHERE 子句:
WHERE (Rooms.Space - COUNT(Guests.Room)) > 0
但是这个也返回一个错误。
我会很感激一些帮助。
最佳答案
SELECT Rooms.Number
FROM Rooms
WHERE (SELECT COUNT(*) from GUESTS WHERE Guests.Room=Rooms.ID) < Rooms.Space
ORDER BY Rooms.Number
看起来更清晰
SELECT Rooms.Number
FROM Rooms
LEFT OUTER JOIN Guests ON Rooms.ID = Guests.Room
GROUP BY Rooms.Number
HAVING COUNT(Guests.Room) < MAX(Rooms.Space)
ORDER BY Rooms.Number
可能也行
关于MySQL:显示或不显示取决于字段和引用计数比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720332/