1

ベローは私の「部屋」mysqlテーブルです。(これは、ここで表示するために作成したテーブルの例です。)

ここに画像の説明を入力

複数の部屋の予約がある場合に備えて、低価格の部屋を表示したい。例: ユーザーは、最初の部屋に大人 1 人、2 番目の部屋に大人 2 人の 2 つの部屋を選択しました。今、私の結果は以下のようになるはずです

ここに画像の説明を入力

私のクエリは次のとおりです。 SELECT * FROM rooms WHERE hotel_code="100" GROUP BY adult+child Order by cost ASC

機能していません。このクエリでは期待される結果を得ることができません。これの解決策を教えてください。

4

2 に答える 2

2

これを試して:

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 フィドルのデモ

これにより、次のことが得られます。

| ID | HOTEL_CODE |    ROOM_TYPE | ADULT | CHILD | COST |
---------------------------------------------------------
|  2 |        100 | Single Delux |     1 |     0 |   20 |
|  3 |        100 | Twin Stadard |     2 |     0 |   25 |
于 2013-02-04T13:13:17.263 に答える