【问题标题】:Joining many tables in SQL在 SQL 中连接多个表
【发布时间】:2015-05-05 07:56:22
【问题描述】:

我正在努力解决这个 SQL 问题: 连锁酒店的数据库包含以下表格:

    Hotel(HotelNo, HotelName, City)   
    Room(RoomNo, HotelNo, Type, Price)  
    Booking(HotelNo, GuestNo, DateFrom, DateTo, RoomNo)     
    Guest(GuestNo,  GuestName, GuestAddress)

我想列出格罗夫纳酒店所有房间的详细信息,包括入住房间的客人的姓名(如果房间有人的话)。

我可以在 SQL 中加入 2 个表,但我不知道如何加入 4 个表。

我的尝试可能是:

SELECT Room.*, Guest.GuestName 
    FROM Room
    INNER JOIN Hotel, Booking, Guest
    ON Hotel.HotelName = "Grosvenor Hotel", Hotel.HotelNo = Room.HotelNo, Booking.GuestNo = Guest.GuestNo;

我认为这是完全错误的,但无论如何,希望有人知道我应该做什么。提前致谢

【问题讨论】:

标签: mysql sql sql-server inner-join


【解决方案1】:

正确的语法是:

SELECT Room.*, Guest.GuestName 
FROM Room
INNER JOIN Hotel on Hotel.HotelNo = Room.HotelNo, 
inner join Booking on Booking.hotelno= Hotel.HotelNo
inner join Guest on Booking.GuestNo = = Guest.GuestNo
where Hotel.HotelName = "Grosvenor Hotel"

【讨论】:

    【解决方案2】:

    试试这个:

      select g.roomno, g.guestname 
    
      from hotel h join room r on h.hotelno = r.hotelno
       join booking b on b.hotelno=r.hotelno 
       join guest g on g.guestno=b.guestno
    
      where h.hotelname='Grosvenor Hotel';
    

    【讨论】:

      【解决方案3】:

      你也可以试试这个..它会帮助你

      SELECT Room.*, Guest.GuestName FROM Room
      INNER JOIN Hotel on Hotel.HotelNo = Room.HotelNo, 
      join Booking on Booking.HotelNo= Hotel.HotelNo
      join Guest on Booking.GuestNo = Guest.GuestNo
      where Hotel.HotelName = "Grosvenor Hotel"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 2019-05-16
        • 2016-09-03
        • 2011-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多