3

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

我有两个表:Team 和 Team_contacts

在第一个表中有如下信息:member_name、member_picture、电话和电子邮件

在 team_contacts 表中,只有成员负责的国家和城市。

所以第一个表看起来像这样:

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

我尝试了不同的连接方法,但似乎没有任何效果。有没有办法用一个查询来做到这一点,还是我需要使用两个不同的查询?如何?

非常感谢您的帮助。

4

1 回答 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
于 2012-09-23T13:10:17.187 回答