繁体   English   中英

MySQL左外部联接或内部联接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM