两个表的SQL查询

3

我将尝试解释我所面临的问题。

我有两个表:团队和团队联系人。

第一个表中包含信息如下: 成员姓名、成员照片、电话和电子邮件。

在团队联系人表中,仅包含成员负责的国家和城市。

因此,第一个表看起来像这样:

member_id: 1
member_name: moonwalker
member_picture: mw.jpg
member_phone: 06xxxxxxxx
member_email: mw@moonwalker.com

第二个表格长这样:
member_id: 1
country: USA
city: California

member_id: 1
country: USA
city: Miami

member_id: 1
country: NL
city: Amsterdam

我需要的是一个查询,能显示以下内容:

mw.jpg 
Moonwalker 
Phone: 06xxxxxxxx 
Email: mw@moonwalker.com 
Active in countries: USA, NL 
Active in cities: California, Miami, Amsterdam

我尝试了不同的连接方法,但似乎都不起作用。有没有一种方法可以使用单个查询完成这个任务,还是我需要使用两个不同的查询?如何操作?
非常感谢您的帮助。
1个回答

4

由于您使用的是MySQL,您可以执行以下操作:

SELECT team.*,
       GROUP_CONCAT(team_contacts.country SEPARATOR ", ") AS active_in_countries,
       GROUP_CONCAT(team_contacts.city SEPARATOR ", ") AS active_in_cities
FROM team
JOIN team_contacts USING (team_id)
GROUP BY team.member_id

请注意,列表的长度受到group_concat_max_len的限制,默认情况下为1024,除非您使用以下命令更改:

SET SESSION group_concat_max_len = @@max_allowed_packet

非常感谢。这似乎有效。只剩下一个小问题:现在国家重复了。所以我看到同一个国家多次。有没有办法只显示一次?再次感谢! - moonwalker
没关系。在表上使用了DISTINCT。非常感谢AndreKR。 :) - moonwalker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接