У меня есть три таблицы, как показано на рисунке ниже.
Примечание:Столбец Lead таблицы заголовка проекта хранит идентификатор сотрудника.
Я хочу иметь возможность получить что-то вроде того, что в таблице моя цель (лид, отображает имя лида этого сотрудника)
Я смог сделать это, используя запрос ниже .
SELECT DISTINCT
projectdetails.ProjectDetailsID,
projectheader.ProjectID,
projectheader.ProjectName,
projectheader.Lead,
projectheader.StartDate,
projectheader.EndDate,
projectheader.Status,
projectheader.Remarks,
projectdetails.EmployeeID,
employee.Firstname,
employee.Lastname,
Lead.Leadname
FROM
projectheader,
projectdetails,
employee,
( SELECT
projectheader.ProjectID AS projid,
CONCAT(employee.Firstname,' ',employee.Lastname) AS Leadname
FROM employee, projectheader, projectdetails
WHERE projectheader.ProjectID = projectdetails.ProjectID
AND projectheader.Lead = employee.EmployeeID
) AS Lead
WHERE projectheader.ProjectID = projectdetails.ProjectID
AND projectdetails.EmployeeID = employee.EmployeeID
AND projectheader.ProjectID = Lead.projid
AND projectdetails.ProjectID = Lead.projid
И получил такой результат:
Запрос, который я использовал, довольно длинный и, возможно, написан не очень хорошо. Я хочу узнать, как по-другому можно добиться того же результата, используя лучший SQL-запрос, используя соединение или подзапрос. (Я добавил DISTINCT в начало projectdetails.ProjectDetailsID, потому что без него некоторые строки дублируются). Я ищу лучший запрос, чем тот, который я сейчас использую.