Reputation: 105
If I have the following two tables
HOTELTABLE
HOTELID HOTEL NAME
1 PARK HOTEL
2 PARK PLAZA
3 HOLIDAY IN
ROOM TABLE
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
I want to list the hotel name, room type and room rate for each hotel that contains the word PARK
in its name, and if a room of the same type and rate at the same hotel I want to list it only once. The following is my code... Would I need a subquery, how can I go around this query?
SELECT DISTINCT HOTELNAME,
DISTINCT ROOMTYPE,
DISTINCT ROOMRATE
FROM ROOM,
HOTEL
WHERE HOTELNAME LIKE '%PARK%'
GROUP BY HOTEL.HOTELNAME,
ROOMTYPE;
THE OUT PUT SHOUD BE
HOTEL NAME ROOMTYPE ROOMMATE
PARK HOTEL SINGLE 100
PARK HOTEL DOUBLE 200
PARK PLAZA FAMILY 300
Upvotes: 0
Views: 103
Reputation: 7169
Another option:
SELECT DISTINCT
HOTELNAME,
ROOMTYPE,
ROOMRATE
FROM
ROOM
JOIN HOTEL
ON ROOM.HOTEL_ID = HOTEL.HOTEL_ID
WHERE
HOTELNAME LIKE '%PARK%'
Upvotes: 2
Reputation: 56853
All items in your select must appear in the group by.
And you need to actually join the two tables together, based on the hotel id.
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
Upvotes: 1