[英]MySQL Left Outer Join or inner join
tbl_House
House_Code (Unique, PK)
Description
tbl_Room
Room_id(pk, auto increment)
House_Code
room_name
available_date
tbl_RoomBook
book_id
House_Code
Room_id
Checkin
Checkout
好的,我试图从这三个表中获取所有记录。
表之间的关系是。
一间多房间的房子和一间多预订记录的房间
我在下面使用了Query,但我认为这无法完全按照我想要的方式工作
因为他们使用house_code保持唯一性...(我认为。)
SELECT H.house_code, H.description
FROM House H
LEFT OUTER JOIN Room R
ON H.house_code = R.house_code
LEFT OUTER JOIN Room_Book RB
ON H.house_code = RB.house_code
对于这种类型的查询, inner join
应该很好。 没有理由认为代码将存在于主表中未定义的表之一(例如room
)中。
但是,您的最后一次加入可能还应该包括房间ID:
SELECT H.house_code, H.description
FROM House H INNER JOIN
Room R
ON H.house_code = R.house_code INNER JOIN
Room_Book RB
ON H.house_code = RB.house_code RB.Room_Id = R.Room_Id;
这有点投机。 样本数据将解决问题。
不是吗:
SELECT H.house_code, H.description
FROM House H
INNER JOIN Room R
ON H.house_code = R.house_code
INNER JOIN Room_Book RB
ON H.house_code = RB.Room_id
由于左连接,您将获得房屋记录,无论是否列出了任何房间或预订了任何房间。
将有重复的记录。 您会看到重复列出的每个房屋编号和描述,其中包括许多房间乘以Room_Book记录计数。
如果您希望记录是唯一的,则仅查询房屋表或进行某种类型的分组依据,或使用“选择区分”。
建议:在每个表中显示一些示例条目,然后显示您想要获得的结果集,您将获得更多帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.