Как правильно выбирать данные из нескольких таблиц, используя соединения/подзапросы? (PHP-MySQL)

У меня есть три таблицы, как показано на рисунке ниже.

Примечание:Столбец Lead таблицы заголовка проекта хранит идентификатор сотрудника.

enter image description here

Я хочу иметь возможность получить что-то вроде того, что в таблице моя цель (лид, отображает имя лида этого сотрудника)

Я смог сделать это, используя запрос ниже .

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

И получил такой результат: enter image description here

Запрос, который я использовал, довольно длинный и, возможно, написан не очень хорошо. Я хочу узнать, как по-другому можно добиться того же результата, используя лучший SQL-запрос, используя соединение или подзапрос. (Я добавил DISTINCT в начало projectdetails.ProjectDetailsID, потому что без него некоторые строки дублируются). Я ищу лучший запрос, чем тот, который я сейчас использую.

8
задан The Nail 24 June 2012 в 08:10
поделиться