【问题标题】:LEFT JOIN 3 tables with some fields missing (NULL)LEFT JOIN 3 个表缺少一些字段(NULL)
【发布时间】:2019-06-20 08:54:50
【问题描述】:

我有一个包含 3 个表的数据库:公司、地址、联系人,其中基本上包含公司本身的一些数据,分别是地址和联系信息。现在,并非所有公司都有地址信息和联系信息。我正在尝试查询数据库以显示所有公司的列表:包括公司名称、地址和联系电话的表。所以我使用这样的查询:

SELECT company.inn, company.name, company.ceo, address.city, contact.phone
    FROM company 
    JOIN address
    JOIN contact
    ON company.id = address.company_id AND company.id = contact.company_id

效果很好,但它不会返回没有地址或联系方式或两者都没有的公司。所以我然后尝试发出左连接命令:

SELECT company.inn, company.name, company.ceo, address.city, contact.phone
    FROM company 
    LEFT JOIN address
    LEFT JOIN contact
    ON company.id = address.company_id AND company.id = contact.company_id

我得到这个错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1

【问题讨论】:

  • 如果您有多个地址和联系人,您可能无法获得预期的结果。如果是这样,请使用示例数据和所需结果提出一个问题。

标签: mysql sql


【解决方案1】:
SELECT company.inn, company.name, company.ceo, address.city, contact.phone
FROM company 
LEFT JOIN address
ON company.id = address.company_id
LEFT JOIN contact 
ON company.id = contact.company_id

ON 必须在JOIN 之后定义。你可以在这里阅读文档https://dev.mysql.com/doc/en/join.html

【讨论】:

  • 你怎么知道的?
  • 阅读提供的文档,那里有一些很好的例子@tnsaturday
  • 我的意思是您从上到下阅读它还是只是搜索特定案例?这对我来说似乎是压倒性的。
  • 你的意思是发现了错误?对于某些人来说,这非常引人注目。特别是对于使用它数千甚至数百万次的人。如果它确实回答了您的问题,请不要忘记将其标记为答案:)
  • 非常感谢您以非常容易理解的方式快速回答问题!
猜你喜欢
  • 2020-04-25
  • 1970-01-01
  • 2020-04-03
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 2017-10-15
  • 1970-01-01
相关资源
最近更新 更多