Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 聚合多个表并将某些列显示为一个_Php_Mysql_Formatting_Tabular - Fatal编程技术网

Php 聚合多个表并将某些列显示为一个

Php 聚合多个表并将某些列显示为一个,php,mysql,formatting,tabular,Php,Mysql,Formatting,Tabular,我在理解php mysql查询时遇到了一个问题。使用这种查询,我试图打印出所有人(inco_人)的电子邮件(inco_电话)和分配给他们的电话号码(inco_电子邮件) 但是,如果有一个以上的电话号码和电子邮件地址相对于一个人的id呢 现在我得到了一个人的4行不同的电子邮件和电话号码。如果有多个字段,有没有办法聚合某些字段 $gsf = mysqli_query( $connector2 ,"SELECT * FROM inco_person LEFT JOIN inco_person_posi

我在理解php mysql查询时遇到了一个问题。使用这种查询,我试图打印出所有人(inco_人)的电子邮件(inco_电话)和分配给他们的电话号码(inco_电子邮件)

但是,如果有一个以上的电话号码和电子邮件地址相对于一个人的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    dyrektor@abc.com

1  Jacek       Kowalski    President    661320993    j.kowalski@abc.com

1  Jacek       Kowalski    President    661320993    dyrektor@abc.com

1  Jacek       Kowalski    President    68-3284099    j.kowalski@abc.com

只需按inco_person.personid添加一个
分组,并通过
group_concat
读取电话号码即可使用
group by
group_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