2011-11-24 25 views
1

我被這個困住了,我想在使用GROUP_CONCAT時選擇3個表中的所有字段。我做的是這個,但它什麼都沒有返回。使用組Concat

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'; 
+0

你沒有得到任何結果可言,或不正確的結果?如果沒有行,你可能會搞砸你的WHERE條件,或者沒有任何top_id等於傳遞$ oldID的任務。 – socha23

+0

我正在使用無限子類的遞歸函數只是集成了這個SQL代碼,我得到了錯誤的結果 – PiDO

+0

我可以發佈整個代碼,如果需要的話。順便謝謝你的時間 – PiDO

回答

1

您需要使用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  -| 
+0

你不知道。根據MySQL手冊,「如果在不包含GROUP BY子句的語句中使用組函數,則相當於在所有行上進行分組。」 – socha23

+0

它仍然沒有返回.. – PiDO

+0

我想要發生的是輸出所有的字段,同時在人事表上使用組concat .. – PiDO