我会尝试解释我面临的问题。
我有两个表: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
我尝试了不同的连接方法,但似乎没有任何效果。有没有办法通过单个查询执行此操作,还是需要使用两个不同的查询?怎么样?
非常感谢你的帮助。
答案 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