首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将用户参与者显示到项目

将用户参与者显示到项目
EN

Stack Overflow用户
提问于 2018-09-04 04:09:03
回答 1查看 43关注 0票数 0

首先,我刚刚花了12个小时试图弄清楚它是如何工作的,我已经学习了很多术语和定义,但我不能正确理解它。我研究过:

一对多relationship

  • Loops

  • Arrays

  • Joins

还有更多!

我想要实现的是在列表中显示所有项目,在项目名称旁边显示项目负责人和每个项目的所有参与者(如果存在)。

所以现在的数据库结构:

DB: PROJECTS
PROJECT_ID  PROJECT_NAME  PROJECT_LEADER
1           MY PROJECT    1
2           UPDATE THIS   1
3           STATUS FIX    2

DB: USERS
USER_ID  USER_FIRSTNAME
1        ADAM
2        BRIAN

DB: PARTICIPANTS
PARTICIPANT_ID  PROJECT_ID  USER_ID
1               1           2

和SQL查询:

SELECT *
FROM PROJECTS P
JOIN users u ON p.project_leader = u.user_id

这是我在运行查询时得到的结果:

MY PROJECT - ADAM
UPDATE THIS - ADAM
STATUS FIX - BRIAN

我希望看到的是:

MY PROJECT - ADAM & BRIAN
UPDATE THIS - ADAM
STATUS FIX - BRIAN

任何帮助都是有价值的!首先,非常感谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-04 06:58:37

此查询将执行您想要的操作。基本上,要获得项目负责人和参与者的姓名,您需要连接到users表中两次,第一次是项目负责人的姓名,然后是参与者的姓名。您还需要对参与者和第二个用户表使用LEFT JOIN,以防项目中没有任何参与者。

SELECT P.PROJECT_NAME, U1.USER_FIRSTNAME AS PROJECT_LEADER, GROUP_CONCAT(U2.USER_FIRSTNAME) AS PARTICIPANTS
FROM PROJECTS P
JOIN USERS U1 ON U1.USER_ID = P.PROJECT_LEADER
LEFT JOIN PARTICIPANTS T ON T.PROJECT_ID = P.PROJECT_ID
LEFT JOIN USERS U2 ON U2.USER_ID = T.USER_ID
GROUP BY P.PROJECT_ID

我创建了一个SQLFiddle (here),我向其中添加了比您多一点的数据。这是输出:

PROJECT_NAME    PROJECT_LEADER  PARTICIPANTS
MY PROJECT      ADAM            JOHN,BRIAN
UPDATE THIS     ADAM            (null)
STATUS FIX      BRIAN           ADAM
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52155707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档