我试图从两个不同的表中列出两个属性(booking.roomno和room.price),条件是“booking.DATETO不为空”。
表:预订!表:房间!
我尝试过使用此命令
select booking.roomno,room.price
from booking
inner join room on booking.ROOMNO=room.roomno
where booking.dateto is not null
虽然返回结果来自重复的roomno和价格,如下所示
答案 0 :(得分:2)
room.roomno
不是唯一的。它在给定的酒店中是唯一的,您的房间表包含多个酒店。您还必须在连接条件中指定hotelno。此外,由于您可能有同一个房间的多个预订(即预订表中的重复),您需要进行DISTINCT以防止这种情况(但是您必须在字段列表中包含hotelno列):
select DISTINCT booking.roomno,room.price, room.hotelno
from booking
inner join room on booking.ROOMNO=room.roomno
AND booking.hotelno=room.hotelno
where booking.dateto is not null
答案 1 :(得分:1)
您有两个同一房间的预订,因此返回的行与您的内部联接相匹配。您似乎正在尝试取出所有预订的房间。您可以通过在所选字段之前添加DISTINCTROW来实现此目的。
select DISTINCTROW booking.hotelno, booking.roomno,room.price
from booking
inner join room on booking.ROOMNO=room.roomno AND
booking.HOTELNO=room.HOTELNO
where booking.dateto is not null