mysql - MySQL Select Left Join 同一张表中的多个列
问题描述
我在主项目工作流表中有需要与用户表中的一个对象相关的对象。我面临的问题是当我进行 LEFT JOIN 时,我一次只能关联一个对象。
我需要做的关系是:
workflowUID = user_id
assignedTo = user_id
我相信问题是由我的 引起的LEFT JOIN
,但是,我不知道我需要使用哪个 join 语句来建立这种关系。
用户表
用户 ID | 用户名 | 用户姓氏 1 | 乔 | 史密斯 2 | 约翰 | 能源部
主项目表
项目ID | 项目名称 | 项目描述 | 项目截止日期 | 项目分配给 1 | 测试标题 | 项目描述 | 11-06-2018 | 2
主项目工作流表已编辑
项目ID | 客户识别码 | 工作流UID | 分配给 1 | 1 | 1 | 2
projectID 与另一个名为 mainProjects 的表相关联,该表列出了有关项目的更多信息,例如项目标题、创建/到期日期、创建者、工作量(小时)、项目描述。
CID 存储在主项目工作流表中。它是提交 ID。稍后将用于编辑/删除评论等内容。
输出
工作流程创建者 | 分配给的工作流 乔·史密斯 | 约翰·多伊
SQL:
SELECT *
FROM mainprojectworkflow
LEFT JOIN user ON mainprojectworkflow.workflowUID = user.user_id
WHERE projectID = $projectID
ORDER BY cid DESC
第二个我尝试在 mainprojectworkflow.workflowUID = user.user_id 上设置第二个 LEFT JOIN 用户,但是作为 mainprojectworkflow.assignedTo 我得到了一个不唯一的表/别名用户。我相信这是因为我已经将用户表设置为 mainprojectworkflow。
编辑
对不起,我应该更清楚发生了什么。
结束结果:我的计划是使用 SQL 选择数据并在网站上以 PHP 显示。这是一个项目管理网站。我希望能够让 PHP 从 SQL 中提取变量,以便我可以使用它们,但我觉得合适。
解决方案
您将需要加入两次表用户,如下所示:
SELECT
mpw.workflowUID,
CONCAT(cu.user_firstName, " ", cu.user_lastName) AS "Workflow Created By",
mpw.assginedTo,
CONCAT(au.user_firstName, " ", au.user_lastName) AS "Workflow Assigned To"
FROM
mainprojectworkflow AS mpw
INNER JOIN
user AS cu ON cu.user_id = mpw.workflowUID
INNER JOIN
user AS au ON au.user_id = mpw.assignedTo
WHERE
projectID = $projectID
ORDER BY
cid DESC
推荐阅读
- python - 为什么我的 python 文件没有获取所有提交的数据?
- c# - 在 Unity 和 C# 中绘制圆
- javascript - 如何使用 lodash 编写嵌套的 for 循环?
- git - 提交信息的首字母大写
- javascript - 带有 Promise 的同步 Javascript 函数无法正常工作
- html - 如何在 BS4 中制作一个注册表单,提示用户使用他们的 instagram 或 facebook 帐户?
- algorithm - NP到P的转变
- python - 命令冷却忽略用户
- python - 将字节存储在文本文件中
- android - Esri Native Xamarin Android 上的对象已拥有异常