mysql - 在单个 MySQL 查询中包含复杂的逻辑

标签 mysql

我想减少使用单个查询搜索酒店的代码中的编程逻辑。


假设这是数据库表。一家酒店有多个契约(Contract)。

enter image description here

我想获取满足输入 max_adults 1(容量 1)个房间的房间数、max_adults 2(容量 2)个房间的房间数和 max_adults 2(容量 2)个房间的房间数的所有原始数据最多可容纳 3 名成人(可容纳 3 人)房间。

例如:

Input : 
2 rooms of max_adults=1(capacity 1)
1 rooms of max_adults=2(capacity 2)
3 rooms of max_adults=3(capacity 3)
必须输出满足所有 3 个条件且具有相同酒店 ID 的行。

如此处所示,输出必须包含酒店 1 和酒店 2 的所有原始数据

由于它们是两个独立的结果,因此需要额外的列来显示生成的 result_id(类似于 here 中的序列号,根据此问题,它必须具有重复项)。

我想了很多方法来做到这一点,但没有一个效果很好。这可以在单个查询中完成吗?

最佳答案

使用自连接:

SELECT r1.HOTEL_ID, r1.MAX_ADULTS, r1.NO_OF_ROOMS,
    r2.MAX_ADULTS, r2.NO_OF_ROOMS,
    r3.MAX_ADULTS, r3.NO_OF_ROOMS,
FROM rooms AS r1
INNER JOIN rooms AS r2 ON r1.HOTEL_ID=r2.HOTEL_ID
INNER JOIN rooms AS r3 ON r1.HOTEL_ID=r3.HOTEL_ID
WHERE r1.MAX_ADULTS=1
AND r2.MAX_ADULTS=2
AND r3.MAX_ADULTS=3

您必须添加子句来检查输入的房间数量条件。

生成的 result_id 将为 r1.HOTEL_ID

每个酒店都会有一行。

关于mysql - 在单个 MySQL 查询中包含复杂的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31847350/

相关文章:

Mysql - 一对多的单个查询

MySQL - "view"表示特定单元格

php - 如何连接来自不同行的单行列中的列

php - 在一个单元格中显示多条记录

php - 这是将表单数据插入 MySQL 数据库的安全方法吗?

mysql - 如何使这个 MySQL 函数不弄乱我的字符集?

php - 如何在heroku上上传PHP和MySQL Web应用程序?

mysql - 我可以从 Windows MySQL Workbench 连接到 GCP CE VM 实例上的 MySQL 吗?

mysql - 在以下情况下是否需要表锁来保持数据完整性

mysql - 德尔福:MySql 与 Indy10