【问题标题】:how do i get multiple inner joins in SQL query如何在 SQL 查询中获得多个内部联接
【发布时间】:2016-10-27 07:37:57
【问题描述】:

问题是表中的联系人可以链接到 4 家公司 我想显示一个联系人链接到的所有公司。 第一个内部联接工作正常,但我想再添加 3 个内部联接,但我不知道如何使用 sql server 执行此操作,因为我的经验是使用 MySql 这是我到目前为止所拥有的:

select contact.Contact_id, 
       contact.Firstname,
       contact.Abbreviation,
       company.Company,
       company.Company,
       company.Company,
       company.Company,
       contact.Sector,
       contact.Available
FROM contact
INNER JOIN company 
  ON  contact.Company_id1=company.Company_id
  WHERE available =1
  ORDER BY Firstname ASC

【问题讨论】:

  • 你可以添加额外的内部连接,就像在 MySql 中一样。
  • 为什么php标签一直被添加?这与 php 无关。
  • 我看到“可以链接4家公司”这几个字。这表明您需要使用外连接而不是内连接。因此,您将从联系人外部加入公司 4 次(例如,别名公司、公司 2、公司 3、公司 4)。表结构会很有帮助。
  • 你真的有列名 Company_id1 等吗?您应该考虑标准化。当企业决定他们需要 5 个时会发生什么?您要么无法支持它,要么必须更改表以及涉及它的每个查询。
  • @SeanLange 我这样做了,但我收到错误“FROM 子句中的对象“公司”和“公司”具有相同的公开名称。使用相关名称来区分它们。”

标签: mysql sql-server join


【解决方案1】:

怎么样

select <columns>
from contact as ct
join company as cy1 on cy1.company_id = ct.company_id1
join company as cy2 on cy2.company_id = ct.company_id2
join company as cy3 on cy3.company_id = ct.company_id2
join company as cy4 on cy4.company_id = ct.company_id4

【讨论】:

  • 如果联系人不隶属于任何公司或不隶属于所有公司或无任何变体,我会亲自加入这些左联接。
  • 是的,还有更好的方法。我只是想让他知道可以做什么。
  • @GabrielBSM 它的工作原理是我一直在使用这种方法处理的问题是我只得到最后一行,结果在我的表中得到了一些证据:link
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多