MySQL Select Left Соединяет несколько столбцов из одной таблицы - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть объекты в таблице Workflow основного проекта, которые мне нужно связать с одним объектом в таблице User. Проблема, с которой я сталкиваюсь, заключается в том, что когда я выполняю левое соединение, я могу связать только один объект за раз.

Отношение, которое мне нужно сделать, это:

workflowUID = user_id
assignedTo   = user_id

Я полагаю, что проблема вызвана моим LEFT 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

Таблица рабочего процесса основного проекта EDITED

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

Идентификатор проекта передается в другую таблицу, называемую mainProjects, в которой содержится дополнительная информация о проекте, такая как название проекта, дата создания / выполнения, время создания, часы, описание проекта.

CID хранится в основной таблице рабочего процесса проекта. Это идентификатор фиксации. Который будет использоваться позже для таких вещей, как редактирование / удаление комментариев.

выход

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

Во-вторых, я пытаюсь установить второго пользователя LEFT JOIN ON mainprojectworkflow.workflowUID = user.user_id, но вместо этого, как mainprojectworkflow.assignedTo, я получаю не уникального пользователя таблицы / псевдонима. Я полагаю, что это потому, что я уже настраиваю пользовательскую таблицу на mainprojectworkflow.

EDIT Извините, мне следовало быть более ясным о том, что происходит.

КОНЕЦ РЕЗУЛЬТАТА: Я планирую использовать SQL для выбора данных и отображения их в PHP на веб-сайте. Это веб-сайт управления проектами. Я хочу, чтобы PHP мог извлекать переменные из SQL, чтобы я мог использовать их по своему усмотрению.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Попробуйте этот тип запроса:

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;
0 голосов
/ 06 ноября 2018

Вам потребуется два раза присоединиться к пользователю таблицы, например:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...