汇总很多表格并将某些列显示为一个

问题描述:

我在理解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] 

只需通过group_concatGROUPING

+0

优秀,花了一段时间来得到它,但当然,它的工作原理。 – jakubplus 2013-05-13 14:57:11

添加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