Mysql 不可解SQL查询

Mysql 不可解SQL查询,mysql,sql,select,Mysql,Sql,Select,我需要MySQL查询的帮助 Table Company: (PK) ID_Company CompanyName ... Table Address: (PK) ID_Address (FK) ID_Company Street ... Table ContactPerson: (PK) ID_ContactPerson (PK) ID_Company PersonName ... 现在,我想创建一个SELECT语句来获取所有客户的列表。这应该是这样的: ID_Company Com

我需要MySQL查询的帮助

Table Company:
(PK) ID_Company
CompanyName
...

Table Address:
(PK) ID_Address
(FK) ID_Company
Street
...

Table ContactPerson:
(PK) ID_ContactPerson
(PK) ID_Company
PersonName
...
现在,我想创建一个SELECT语句来获取所有客户的列表。这应该是这样的:

ID_Company    CompanyName    Street    PersonName
    1           Google        Test        Joe
但一家公司可以没有、一个或多个地址和联系人。我只想在此查询中选择一个地址和一个联系人。这就是我不知道该怎么做的地方

我尝试过的一件事是选择ID_地址的最小值,但如果一家公司没有地址和联系人,这就行不通

我希望你明白我想做什么


谢谢大家的帮助!:)

您可以使用左连接和聚合:

select c.ID_Company, c.company_name, min(street), min(person_name)
from company c left join
     address a
     on c.ID_Company = a.ID_Company left join
     ContactPerson cp
     on cp.ID_Company = a.ID_Company
group by c.ID_Company, c.company_name;

如果一家公司有几个这样的地址或联系人,如何选择?欢迎访问该网站!这不是一个真正的SQL问题;这是一个数据架构问题。我们可以很容易地告诉您如何获得每家公司的地址和联系人,但只有您可以决定需要哪个地址或联系人。如果你不在乎你得到的地址或联系人,那么你应该更新你的问题来说明这一点。从左连接开始。这就是重点:选择哪个地址并不重要。Perfect将是首先创建的(PKs具有自动增量,因此在本例中为PK最低的地址/人员),首先感谢您的回答。但如果我选择a.ID_公司,如果该公司没有地址怎么办?ID_公司此行的主键将为空。我修改了此查询并使其正常工作。比我想象的简单多了!非常感谢您的帮助!:)@阿拉曼。我完全按照我想要的格式格式化代码
LEFT JOIN
是连接两个表的运算符。我不以二进制运算符开始行。左对齐的关键字都是start SQL子句。