使用INNER JOIN显示多个结果

时间:2013-11-17 16:32:20

标签: php mysql database left-join 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查询以显示服务。只用一个查询就可以做到这一点吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

你的问题的答案是:“是的。”

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

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;

答案 1 :(得分:0)

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

您可以使用一个查询来准备以下列表:
谷歌,搜索
谷歌,日历
谷歌,邮件
谷歌,地图
雅虎,搜索
雅虎,邮件
...
(为简单起见,我遗漏了ids) 然后,您将浏览列表,每次公司更改时,您都会开始新的结果行。我觉得这比你描述的方法复杂一点。