0

次の2つのテーブルがある場合

ホテルテーブル

 HOTELID   HOTEL NAME
  1        PARK HOTEL
  2        PARK PLAZA
  3        HOLIDAY IN

ルームテーブル

HOTELID    ROOMINUMBER  ROOMTYPE  FLOORNUMBER  ROOMRATE
1          111          SINGLE         1          100
1          111          DOUBLE         1          200
1          113          DOUBLE         2          200
2          111          FAMILY         2          300

名前に単語が含まれるホテルごとに、ホテル名、部屋タイプ、PARK料金をリストアップしたいのですが、同じホテルに同じタイプと料金の部屋があれば、一度だけリストしたいです。以下は私のコードです...サブクエリが必要ですか、どうすればこのクエリを回避できますか?

SELECT DISTINCT HOTELNAME, 
       DISTINCT ROOMTYPE, 
       DISTINCT ROOMRATE
  FROM ROOM, 
       HOTEL
 WHERE HOTELNAME LIKE '%PARK%'
GROUP BY HOTEL.HOTELNAME, 
         ROOMTYPE;

アウトプットはあるべき

HOTEL NAME      ROOMTYPE   ROOMMATE
PARK HOTEL       SINGLE     100
PARK HOTEL       DOUBLE     200
PARK PLAZA       FAMILY     300
4

2 に答える 2

2

別のオプション:

SELECT DISTINCT 
    HOTELNAME, 
    ROOMTYPE, 
    ROOMRATE
FROM 
    ROOM 
    JOIN HOTEL
       ON ROOM.HOTEL_ID = HOTEL.HOTEL_ID
WHERE 
    HOTELNAME LIKE '%PARK%'
于 2013-03-13T16:00:40.603 に答える
1

select 内のすべての項目が group by に表示される必要があります。

そして、ホテル ID に基づいて、実際に 2 つのテーブルを結合する必要があります。

SELECT H.HOTELNAME, R.ROOMTYPE, R.ROOMRATE
FROM HOTEL H INNER JOIN ROOM R ON H,HOTELID = R.HOTELID
WHERE H.HOTELNAME LIKE '%PARK%'
GROUP BY H.HOTELNAME, R.ROOMTYPE, R.ROOMRATE
于 2013-03-13T15:59:13.063 に答える