GROUP_CONCAT无法按预期工作

问题描述 投票:1回答:1

我有很多关系。 Projects表,projects_users表和users表。我正在尝试返回项目列表及其关联用户。这是我正在使用的查询,它可以工作,但只显示一个用户,当我知道应该有更多:

    SELECT
        projects.id,
        `projects`.`project_name`,
        ( GROUP_CONCAT(DISTINCT `users`.`name`  separator ', ' ) ) AS staff,
FROM `projects`
    INNER JOIN `projects_users` ON (`projects_users`.`project_id` = `projects`.`id` )
    INNER JOIN `users` ON (`users`.`id` = `projects_users`.`user_id` ) 
    GROUP BY projects.id, `projects_users`.`user_id` 
    HAVING (`projects_users`.`user_id` = 8)

有几个用户与每个项目相关联,我希望返回类似“用户1,用户2,用户3”的内容。相反,我只得到“用户1”。

mysql group-by inner-join having having-clause
1个回答
1
投票

由于您需要聚合每个项目的用户,因此您应该根据user_id进行分组:

SELECT
    projects.id,
    `projects`.`project_name`,
    ( GROUP_CONCAT(DISTINCT `users`.`name`  separator ', ' ) ) AS staff
FROM projects -- was missing in the OP
INNER JOIN `projects_users` ON (`projects_users`.`project_id` = `projects`.`id` )
INNER JOIN `users` ON (`users`.`id` = `projects_users`.`user_id` ) 
GROUP BY projects.id -- Group by fixed here
HAVING (`projects_users`.`user_id` = 8)
© www.soinside.com 2019 - 2024. All rights reserved.