下面是我的“房间”mysql表。(这是我在这里创建的示例表。)
我想展示低成本的房间,以防多个房间预订。例:用户选择了两个房间,一个成人在第一个房间,两个成人在第二个房间。现在我的结果如下
我的查询是:从hotel_code=“100”GROUP BY成人+child Order BY cost ASC的房间中选择*
它不起作用。我无法通过此查询获得预期结果。请告诉我解决办法。

最佳答案

试试这个:

SELECT  r.*
FROM Rooms r
INNER JOIN
(
  SELECT
    adult, child, MIN(Cost) MinCost
  FROM Rooms
  WHERE hotel_code = 100
  GROUP BY  adult, child
) m ON r.adult = m.adult AND r.child = m.child
  AND r.cost = m.mincost
ORDER BY r.id
LIMIT 2;

SQL Fiddle Demo
这将给你:
| ID | HOTEL_CODE |    ROOM_TYPE | ADULT | CHILD | COST |
---------------------------------------------------------
|  2 |        100 | Single Delux |     1 |     0 |   20 |
|  3 |        100 | Twin Stadard |     2 |     0 |   25 |

关于mysql - 我的SQL查询无法在多个房间预订中获得廉价房间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14687358/

10-12 12:20