MySQL根据记录的总和查询一个表或在另一张表中没有记录

标签 mysql select join left-join

我正在努力根据存储在单独表中的可用性从位置表(例如酒店)中选择记录。为避免每个可能的日期/地点组合都有大量可用性记录,可用性表仅保存给定日期有限或无可用性的记录 - 因此缺少匹配记录意味着存在完整可用性。

表格有点像...

locations: id, name, maxRooms etc.

availability: locationID, date, roomsAvailable( an integer from zero meaning no availability to maxRooms)

...我需要做的是选择所有在给定日期期间有空位的地点。这意味着他们要么没有匹配的可用性记录(即完全可用),要么匹配的 availability.roomsAvailable 记录的总和大于零。

我只是想解释这个就头疼了:-(任何想法都感激地收到......

最佳答案

SELECT locations.id FROM locations LEFT JOIN availability
    ON( locations.id = availability.locationID AND
        ( availability.roomsAvailable > 0 OR ISNULL( availability.locationID ) ) )

关于MySQL根据记录的总和查询一个表或在另一张表中没有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6944452/

相关文章:

javascript - PHP - SQL - 单击按钮更新数据

python - 类型错误:无法将 'QRadioButton' 对象隐式转换为 str

mysql - 在关系数据库中访问结果时出错

使用外键按层次结构排序的 mySQL 查询

mysql - 如何在CentOS 7上查看mariadb生成的错误日志

MySQL,优化子查询

mysql - SQL select语句优化(id,parent_id,child_ids)

php - mysql从5.5升级到5.7,MyISAM到InnoDB,LEFT JOIN和NULL问题

php - 在 MYSQL 中有效地连接 3 个表

php mysql按州列出代表,代表表中没有多行