我需要将主项目工作流表中的对象与用户表中的一个对象相关联。我面临的问题是当我进行 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/