我很困惑我的数据库发生了什么。我用Join加入了3个表:
Select hotel.hotelName, hotel.city, room.price, booking.guestNo
From hotel
Join Room on room.HotelNo = hotel.HotelNo
Join Booking on booking.hotelNo = hotel.hotelNo
Where (guestNo= 987)
预订987只有2条他预订2个独立酒店的记录,但我在查询中得到3条记录。为什么会这样?额外记录来自哪里?
编辑:但是当我删除价格并添加来宾表而不是价格表时如图所示:
Select hotel.hotelName, hotel.city, guest.guestName, booking.guestNo
From hotel
Join Booking on booking.hotelNo = hotel.hotelNo
Join Guest on guest.guestNo = booking.guestNo
Where (guest.guestNo= 987)
实际的2条记录显示,而不是3条。
答案 0 :(得分:0)
我怀疑酒店房间的价格超过了一(1)个。 (许多酒店的房间价格不止一个。)如果是这样,那么查询需要由room.price进行优化。
这可能或可通过以下方式解决:
Select hotel.hotelName, hotel.city, room.price, booking.guestNo
From hotel
Join Room on room.HotelNo = hotel.HotelNo
Join Booking on booking.hotelNo = hotel.hotelNo
Where (guestNo= 987) and room.Price = 155.89
但是,如果无法访问架构,这只是猜测。
同样可能是房间有一个或两个特价。在这种情况下,您需要知道特殊费率是否存在并且已应用于您的客户。