简体   繁体   English

MySQL选择左连接从同一表中的多个列

[英]MySQL Select Left Join multiple columns from the same table

I have objects in the Main Project Workflow table that I need to relate to one object in the User table. 我在Main Project Workflow表中有一些对象需要与User表中的一个对象相关联。 The issue I am facing is when I do a LEFT JOIN, I can only relate one object at a time. 我面临的问题是当我进行左联接时,一次只能关联一个对象。

The relation I need to do is: 我需要做的关系是:

workflowUID = user_id
assignedTo   = user_id

I believe the problem is being caused by my LEFT JOIN , however, I don't know which join statement I need to use to do this relation. 我认为问题是由我的LEFT JOIN引起的,但是,我不知道我需要使用哪个join语句来建立这种关系。

User Table 用户表

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. projectID关联到另一个表mainProjects,该表列出了有关项目的更多信息,例如项目标题,创建/到期日期,创建时间,工作时间,项目描述。

The CID is stored in the Main Project Workflow Table. CID存储在主项目工作流表中。 It is the Commit ID. 它是提交ID。 Which will be used later for stuff like editing/deleting comments. 稍后将用于编辑/删除评论之类的内容。

Output 产量

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

SQL: SQL:

SELECT *
FROM mainprojectworkflow 
LEFT JOIN user ON mainprojectworkflow.workflowUID = user.user_id
WHERE projectID = $projectID
ORDER BY cid DESC

The second I try setting a second LEFT JOIN user ON mainprojectworkflow.workflowUID = user.user_id but instead, as a mainprojectworkflow.assignedTo I get a not unique table/alias user. 第二个我尝试在mainprojectworkflow.workflowUID = user.user_id上设置第二个LEFT JOIN用户,但是作为mainprojectworkflow.assignedTo我得到了一个不唯一的表/别名用户。 I believe this is because I am already setting the user table to mainprojectworkflow. 我相信这是因为我已经将用户表设置为mainprojectworkflow。

EDIT I'm sorry, I should have been more clear on what's going on. 编辑对不起,我应该对所发生的事情更加清楚。

END RESULT: My plan is to use the SQL to select the data and display it in PHP on a website. 最终结果:我的计划是使用SQL选择数据并将其显示在网站上的PHP中。 It's a project management website. 这是一个项目管理网站。 I want to be able to have PHP pull the variables from SQL so I can use them however I feel fit. 我希望能够使PHP从SQL中提取变量,以便我可以使用它们,但我觉得合适。

You will need to join two times to the table user, like this: 您将需要两次加入表用户,如下所示:

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

Try this type Of query : 试试这种类型的查询:

SELECT 
CONCAT_WS(' ', uc.user_firstName, uc.user_lastName) AS Workflow_Created_By, 
CONCAT_WS(' ', ua.user_firstName, ua.user_lastName) AS Workflow_Assigned_To 
FROM mainprojectworkflow 
LEFT JOIN User uc ON mainprojectworkflow.workflowUID = uc.user_id 
LEFT JOIN User ua ON mainprojectworkflow.assignedTo = ua.user_id;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM