3

私が直面している問題を説明しようとします。

Team と Team_contacts の 2 つのテーブルがあります。

最初のテーブルには、member_name、member_picture、phone、email などの情報があります。

team_contacts テーブルには、メンバーが担当する国と都市のみがあります。

したがって、最初のテーブルは次のようになります。

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

2 番目のテーブルは次のようになります。

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

さまざまな参加方法を試しましたが、何もうまくいかないようです。単一のクエリでこれを行う方法はありますか、それとも 2 つの異なるクエリを使用する必要がありますか? そしてどうやって?

助けてくれてありがとう。

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 に答える