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

时间:2018-11-06 15:27:53

标签: mysql sql

我在Main Project Workflow表中有一些对象需要与User表中的一个对象相关联。我面临的问题是当我进行LEFT JOIN时,一次只能关联一个对象。

我需要做的关系是:

workflowUID = user_id
assignedTo   = user_id

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

用户表

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

主项目表

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

主项目工作流程表已编辑

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

projectID关联到另一个表mainProjects,该表列出了有关该项目的更多信息,例如项目标题,创建/到期日期,创建者,工作时间,项目描述。

CID存储在主项目工作流表中。它是提交ID。稍后将用于编辑/删除评论之类的内容。

输出

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。

编辑 对不起,我应该对发生的事情更加清楚。

END结果::我的计划是使用SQL选择数据并将其显示在网站上的PHP中。这是一个项目管理网站。我希望能够使PHP从SQL中提取变量,以便我可以使用它们,但我觉得合适。

2 个答案:

答案 0 :(得分:3)

您将需要两次加入表用户,如下所示:

import UIKit

class CustomeCellCollectionViewCell: UICollectionViewCell , UIScrollViewDelegate {

    @IBOutlet var imageView : UIImageView!
    @IBOutlet var scrollView : UIScrollView!

    override func awakeFromNib() {
        super.awakeFromNib()

        scrollView.delegate = self
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 6.0
    }

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {

        return feedsImageView
    }
}

答案 1 :(得分:0)

尝试这种查询类型:

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;