2012-09-23 135 views
3

我會嘗試解釋我所面臨的問題。兩個表的SQL查詢

我有兩個表:團隊和Team_contacts

在第一個表不存在像信息: MEMBER_NAME,member_picture,電話和電子郵件

在team_contacts表,只有國家和城市部件負責。

所以第一個表看起來像這樣:

member_id: 1 
member_name: moonwalker 
member_picture: mw.jpg 
member_phone: 06xxxxxxxx 
member_email: [email protected] 

第二個表是這樣的:

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: [email protected] 
Active in countries: USA, NL 
Active in cities: California, Miami, Amsterdam 

我嘗試了不同的連接方法,但似乎沒有任何工作。有沒有辦法做到這一點與單個查詢或我需要使用兩個不同的查詢?如何?

非常感謝您的幫助。

回答

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 
+0

非常感謝。這似乎工作。只剩下一個小問題:現在國家重複了。所以我多次看到同一個國家。有沒有辦法只顯示一次?再次感謝! – moonwalker

+0

沒關係。在桌上使用DISTINCT。非常感謝AndreKR。 :) – moonwalker