MySQL:显示或不显示取决于字段和引用计数比较

标签 mysql database count left-join where-clause

我会尽量简短。我有一张带有“客人”的 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/

相关文章:

mysql - 尝试恢复大于 10 GB 的 sql 转储文件

Mysql根据前缀计算总内存

mysql - 在MySQL中实现继承:替代方案和仅具有代理键的表

mysql - 配方数据库,按成分搜索

sql查询-如何分别计算一行中的值?

mysql - 如何通过 MAX(date) 检索行数据?

mysql - 修改MySQL语句以按时间间隔过滤数据

ios - NSPersistentContainer 不创建数据库文件

mysql - 仅返回符合特定条件的值

mysql - 按日期计数和分组应在没有值时返回 0