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

假设这是数据库表。一家酒店有几份合同。mysql - 在单个MySQL查询中包含复杂的逻辑-LMLPHP我想获取所有满足输入的max_adults 1(可容纳人数1)房间的房间数,max_adults 2(可容纳人数2)房间的房间数和max_adults 3(capacity 3)房间的房间。

例如:输入:2个max_adults = 1(容量1)房间1个max_adults = 2(容量2)房间3个max_adults = 3(容量3)房间
必须输出使用same hotel id满足所有3个条件的行。

如此处所示,输出必须包含hotel 1 and hotel 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/

10-14 15:22