首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL左外联接或内联接

问MySQL左外联接或内联接
EN

Stack Overflow用户
提问于 2014-02-08 02:35:54
回答 3查看 53关注 0票数 0
代码语言:javascript
复制
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来保持唯一性…(我想)。

代码语言:javascript
复制
   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
EN

回答 3

Stack Overflow用户

发布于 2014-02-08 02:41:38

对于这种类型的查询,inner join应该就足够了。没有理由认为代码会在一个没有在主表中定义的表(比如room)中。

但是,您的最后一次加入可能还应该包括房间id:

代码语言:javascript
复制
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;

这有点投机性。样本数据会让问题变得清晰。

票数 0
EN

Stack Overflow用户

发布于 2014-02-08 02:43:42

难道不是:

代码语言:javascript
复制
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  
票数 0
EN

Stack Overflow用户

发布于 2014-02-08 02:44:59

由于左侧的连接,您将获得House的记录,无论是否列出了任何房间或其任何房间都已预订。

会有重复的记录。您将看到每个房间的代号和描述的列表,每个房间的重复数量乘以Room_Book记录数量。

如果希望记录是唯一的,只需查询House表或执行某种类型的group by或使用Select Distinct。

建议:在每个表中显示一些示例条目,然后显示您希望获得的结果集,您将获得更多帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21635273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档