MySQL:显示与否取决于字段&引用计数比较
MySQL: Show or not depending on field & reference count comparison
我会尽量简短。我有一个 table 和 "Guests" 以及一个 table 和 "Rooms"。每个客人都可以分配到一个房间,但房间本身可以容纳不同数量的客人,在字段 "Space" 中指定。在用于注册新客人的表格中,我想创建一个可供选择的可用房间列表 - 一个仅显示仍可容纳至少一个人的房间数量的列表。
我的想法是简单地使用:
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
但是这个也returns一个错误。
非常感谢您的帮助。
如果您使用像 Count()
这样没有 Group By
子句的聚合函数,它将计算整个数据集的聚合值。相反,在 Rooms.Number
上使用 Group by
和 Having
子句来过滤掉可用 space.
的房间
尝试:
SELECT Rooms.Number,
Rooms.Space - COUNT(Guests.Room) AS available_space
FROM Rooms
LEFT OUTER JOIN Guests ON Rooms.ID = Guests.Room
GROUP BY Rooms.Number, Rooms.Space
HAVING available_space > 0
ORDER BY Rooms.Number
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
可能也可以
我会尽量简短。我有一个 table 和 "Guests" 以及一个 table 和 "Rooms"。每个客人都可以分配到一个房间,但房间本身可以容纳不同数量的客人,在字段 "Space" 中指定。在用于注册新客人的表格中,我想创建一个可供选择的可用房间列表 - 一个仅显示仍可容纳至少一个人的房间数量的列表。
我的想法是简单地使用:
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
但是这个也returns一个错误。
非常感谢您的帮助。
如果您使用像 Count()
这样没有 Group By
子句的聚合函数,它将计算整个数据集的聚合值。相反,在 Rooms.Number
上使用 Group by
和 Having
子句来过滤掉可用 space.
尝试:
SELECT Rooms.Number,
Rooms.Space - COUNT(Guests.Room) AS available_space
FROM Rooms
LEFT OUTER JOIN Guests ON Rooms.ID = Guests.Room
GROUP BY Rooms.Number, Rooms.Space
HAVING available_space > 0
ORDER BY Rooms.Number
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
可能也可以