使用INNER JOIN显示多个结果


Display multiple results with INNER JOIN

我有这三个MySQL表:

companies                    services                      auxiliary
id_company name_company      id_service  name_service      id_company id_service   
1          Google            1           Search            1          1   
2          Yahoo             2           Calendar          1          2  
                             3           Mail              1          3
                             4           Maps              1          4
                                                           2          1
                                                           2          3

我想知道我是否可以只显示一个查询(我使用的是php):

Google: Search, Calendar, Mail, Maps.
Yahoo: Search, Mail.

现在我所做的是显示公司,并为每个公司制作另一个MySQL查询来显示服务。只需要一个查询就可以做到这一点吗?非常感谢。

您的问题的答案是:"是"。

哦,你也想知道怎么做。关键是将表连接在一起,然后在公司级别进行聚合。我假设您确实希望输出为两列(公司名称、服务),而不是一个字符串,将它们连接在一起。

SQL是:

select c.name_company, group_concat(s.name_service separator ', ') as services
from auxiliary a join
     companies c
     on a.id_company = c.id_company join
     services s
     on a.id_service =  s.id_service
group by c.id_company, c.name_company;

是的,你可以。尽管在我看来,你描述的方法对我来说似乎更自然。(一个查询/光标用于公司,另一个用于服务)

您可以使用一个查询来准备以下列表:
谷歌,搜索
谷歌,日历
谷歌,邮件
谷歌,地图
雅虎,搜索
雅虎,邮件

(为了简单起见,我省略了ID)
然后,您浏览列表,每次公司更改时,您都会开始一个新的结果行。我觉得这比你描述的方法要复杂一些。