无法解决的SQL查询

时间:2018-11-08 15:19:06

标签: 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    CompanyName    Street    PersonName
    1           Google        Test        Joe

但是公司不能有一个,一个或多个地址并可以与联系人联系。我只想在此查询中选择一个地址和一个联系人。这就是我不知道该怎么做的地方。

我试图做的一件事是选择ID_Address的MIN,但是如果公司没有地址和联系人,那将不起作用。

希望您能理解我要做什么。

谢谢大家的帮助! :)

1 个答案:

答案 0 :(得分:0)

您可以使用left join和聚合:

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;