모든 호텔에 대해 예약 된 Hotel_ID, Hotel_Name 및 전체 객실 수를 표시하려고합니다. 그러나 Gold 클래스 고객이 예약하고 구입 한 8 개 이상의 객실이있는 고객 만 표시하면됩니다. 나는 SQL에 아주 새롭다 (하루 전 시작). 그래서 나는 내 실수로 나를 참아 준다.여러 테이블에 걸쳐 SQL 쿼리 결합하기
내가 호텔에서 예약 한 모든 객실이 Gold 등급의 게스트 인 경우 호텔 ID/이름/총 수를 표시합니다.하지만 믹스가있는 경우 (예 : 일부 객실/Gold 클래스는 예약, Silver는 다른 호텔 예약), 그 호텔은 나타나지 않습니다.
(예 : 다양한 예약 ID로 골드 회원이 12 개의 객실을 예약 한 경우 힐튼, [호텔 ID], 12가 표시됩니다. 그러나 Super 8에 골드 멤버가 예약 한 총 10 개의 객실이있는 경우 Silver가 예약 한 또 다른 7 개, Super 8, [Hotel_ID], 10을 표시해야합니다. - 지금은 Hilton이 작동하지만 Super 8 예제는 전혀 표시되지 않습니다.
SELECT hotel.hotel_id, hotel.hotel_name, SUM(rooms.number_rooms) AS total_rooms_booked
FROM hotel, rooms
WHERE hotel.hotel_id=rooms.hotel_id
HAVING SUM(rooms.number_rooms) > 8
GROUP BY hotel.hotel_id, hotel.hotel_name
INTERSECT
SELECT hotel.hotel_id, hotel.hotel_name, SUM(rooms.number_rooms) AS total_rooms_booked
FROM hotel, rooms, booking, guests
WHERE hotel.hotel_id=rooms.hotel_id AND rooms.booking_id=booking.booking_id
AND booking.guest_id=guests.guest_id AND class='gold'
GROUP BY hotel.hotel_id, hotel.hotel_name
;
다음은 테이블 설정 방법입니다.
HOTEL
Hotel_ID (1,2,3,4 등).
HOTEL_NAME (힐튼 메리어트, 리츠 수퍼 8 등)
ROOMS
Booking_ID (101 등 102, 103, 104)
Hotel_ID (위 참조)
Number_Rooms는 (그러나 많은 룸을 특정 Booking_ID/일 하에서 예약 된 게스트)
BO OKING
Booking_ID (위 참조)
Booking_Date (DD-MM-YY)
Guest_ID (1,2,3,4 등)
손님
Guest_ID (위 참조)
Guest_Name (첫번째 마지막)
클래스 (브론즈, 실버, 골드)
"JOIN'을 실제로 할 필요가있는 것처럼 들리지만, 더 도움이 필요하면 직접 물어보십시오. – uTeisT