【问题标题】:Aggregating many tables and displaying certain columns as one聚合许多表并将某些列显示为一个
【发布时间】:2013-05-13 13:25:52
【问题描述】:

我在理解 php-mysql 查询方面遇到了问题。使用这种查询,我尝试打印出所有人员 (inco_person) 的电子邮件 (inco_phone) 和分配给他们的电话号码 (inco_email)。

但是,如果有多个电话号码和电子邮件地址相对于一个人 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

【问题讨论】:

    标签: php mysql formatting tabular


    【解决方案1】:

    只需添加一个group by inco_person.personid 并通过group_concat 读取电话号码GROUPING

    【讨论】:

      【解决方案2】:

      您可以使用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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-07
        • 2021-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多