MySQL Select Left Join 来自同一张表的多列

标签 mysql sql

我需要将主项目工作流表中的对象与用户表中的一个对象相关联。我面临的问题是当我进行 LEFT JOIN 时,我一次只能关联一个对象。

我需要做的关系是:

workflowUID = user_id
assignedTo   = user_id

我认为问题是由我的 LEFT JOIN 引起的,但是,我不知道我需要使用哪个连接语句来建立这种关系。

用户表

user_id | user_firstName | user_lastName
1       | Joe            | Smith
2       | John           | Doe

Main Project Table

projectID | projectTitle | projectDesc   | projectDueDate | projectAssignedTo
1         | Test Title   | Desc for Proj | 11-06-2018     | 2

Main Project Workflow Table EDITED

projectID | CID | workflowUID | assignedTo
1         | 1   | 1           | 2

The projectID is releated to another table called mainProjects, which list more info about the project such as the project title, created/due date, created by, effort in hours, project description.

The CID is stored in the Main Project Workflow Table. It is the Commit ID. Which will be used later for stuff like editing/deleting comments.

Output

Workflow Created By | Workflow Assigned To
Joe Smith           | John Doe

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

关于MySQL Select Left Join 来自同一张表的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53174959/

相关文章:

mysql - SQL如何删除特定列的重复行并保留一个

php - CodeIgniter:在一个循环中显示两个表中的数据

php - 由于 mysql 查询而出现可捕获的 fatal error : Object of class stdClass could not be converted to string in,

mysql - 无法让 SQL 查询使用语法错误的变量 b/c

php - 从表中选择类型为 int 和 varchar 的所有列

mysql - 选择行时不需要的行

java - 在 java 中设置准备和执行查询

mysql - 通过子字符串的最长公共(public)尾部(右侧部分)在表中查找字符串的行

mysql - SQL整数查询,查找+/- 1以内的整数

mysql - 选择映射是多对多映射表中给定输入的子集的行