两个表的SQL查询

时间:2012-09-23 13:07:56

标签: php mysql

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

我有两个表: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

我尝试了不同的连接方法,但似乎没有任何效果。有没有办法通过单个查询执行此操作,还是需要使用两个不同的查询?怎么样?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分: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