2013-05-13 57 views
1

我在理解php-mysql查詢時遇到了問題。使用這種查詢,我嘗試使用電子郵件(inco_phone)和分配給他們的電話號碼(inco_email)打印出所有人(inco_person)。彙總很多表格並將某些列顯示爲一個

但是,如果有一個以上的電話號碼和電子郵件地址相對於一個人的ID呢?

現在我得到4行,一個人有不同的電子郵件和電話號碼集。如果有多個領域,有什麼辦法可以聚合某些領域?

$gsf = mysqli_query($connector2 ,"SELECT * FROM inco_person 
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid 
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id 
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id 
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid 
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid 
ORDER BY inco_person.personid") or die(mysqli_error($connector2)); 

結果:

ID Firstname Lastname Position  E-Mail  Phone 

1 Jacek  Kowalski President 68-3284099 [email protected] 

1 Jacek  Kowalski President 661320993 [email protected] 

1 Jacek  Kowalski President 661320993 [email protected] 

1 Jacek  Kowalski President 68-3284099 [email protected] 

回答

0

只需通過group_concatGROUPING

+0

優秀,花了一段時間來得到它,但當然,它的工作原理。 – jakubplus 2013-05-13 14:57:11

0

添加group by inco_person.personid和讀取的電話號碼,您可以使用GROUP BYGROUP_CONCAT

SELECT inco_person.personid, GROUP_CONCAT(inco_email.email SEPARATOR ' ') FROM inco_person 
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid 
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id 
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id 
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid 
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid 
GROUP BY inco_person_position.person_id ORDER BY inco_person.personid