繁体   English   中英

使用群组连络人

[英]Using Group Concat

我对此感到困惑,我想在使用GROUP_CONCAT时选择3表中的所有字段。 我所做的就是这个,但是它什么也没返回。

SELECT
    personnel.Task_id AS personnel_Task_id,
    personnel.Top_id AS personnel_Top_id,
    GROUP_CONCAT(personnel.Personnel) AS Personnel,
    project.P_id AS project_P_id,
    project.P_name, project.P_manager, project.POC,
    project.TSD,
    project.TED,
    project.ASD AS project_ASD,
    project.AED AS project_AED,
    project.DT AS project_DT,
    project.DA AS project_DA,
    project.DV AS project_DV,
    task.Task_id AS task_Task_id,
    task.Top_id AS task_Top_id,
    task.Task_name,
    task.Frm,
    task.todate,
    task.ASD AS task_ASD,
    task.AED AS task_AED,
    task.P_id AS task_P_id,
    task.DT AS task_DT,
    task.DA AS task_DA,
    task.DV AS task_DV,
    task.Completion
FROM project_management.task,
     project_management.project,
     project_management.personnel
WHERE personnel.Task_id = task.Task_id
  AND project.P_id = task.P_id
  AND task.Top_id = '$oldID';

您需要将GROUP BY用于组concat让我解释一下

使用GROUP BY时,需要使所有选择列兼容

这意味着您不能选择未分组的列。

您需要在未分组的列上使用分组聚合函数

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

在此示例表中,我们无法直接选择ID

我们可以选择MAX(id)MIN(id)AVG(id)...

示例表

|-id -|-   Name    -|- Department -|
|- 1 -|-  Name 1   -|-     1      -|
|- 2 -|-  Name 2   -|-     1      -|
|- 3 -|-  Name 3   -|-     1      -|
|- 4 -|-  Name 4   -|-     2      -|

询问

SELECT GROUP_CONCAT(Name,DESC SEPARATOR ', ') As Names,Department
FROM person
GROUP BY Department

结果

|-id -|-          Names           -|- Department -|
|- 1 -|-  Name 1, Name 2, Name 3  -|-     1      -|
|- 2 -|-          Name 4          -|-     1      -|

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM