我有这三个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查询以显示服务。只用一个查询就可以做到这一点吗? 谢谢。
答案 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)
然后,您将浏览列表,每次公司更改时,您都会开始新的结果行。我觉得这比你描述的方法复杂一点。