PHP MySQL присоединить таблицу пользователей к нескольким столбцам и строкам
У меня возникли некоторые проблемы с объединением таблиц в проекте, над которым я работаю, для проектов.
У меня есть 3 таблицы: одна для проектов, одна для клиентов и одна для пользователей. Я пытаюсь сохранить ID клиентов и пользователей в таблице проектов и присоединяться к ним при получении.+----+--------------+
| ID | CustomerName |
+----+--------------+
| 1 | Customer 1 |
| 2 | Customer 2 |
| 3 | Customer 3 |
+----+--------------+
+----+-----------+----------+
| ID | FirstName | LastName |
+----+-----------+----------+
| 1 | Bob | Belcher |
| 2 | Stirling | Archer |
| 3 | Bart | Simpson |
| 4 | Peter | Griffin |
| 5 | BoJack | Horseman |
| 6 | Eric | Cartman |
+----+-----------+----------+
+----+---------------+-----------------+-------------+-------------------+-------------------+--------------------+
| ID | ProjectNumber | ProjectCustomer | ProjectLead | ProjectElectrical | ProjectMechanical | ProjectDescription |
+----+---------------+-----------------+-------------+-------------------+-------------------+--------------------+
| 1 | 0001 | 1 | 3 | 4 | 6 | Project 1 |
| 2 | 0002 | 2 | 2 | 5 | 5 | Project 2 |
| 3 | 0003 | 3 | 1 | 6 | 4 | Project 3 |
+----+---------------+-----------------+-------------+-------------------+-------------------+--------------------+
Я играл с Select's весь день, и это все, что я смог найти, так что:
select Projects.ProjectNumber, Customers.CustomerName, CONCAT_WS(' ', Users.FirstName, Users.LastName) AS ProjectLead, Projects.ProjectElectrical, Projects.ProjectMechanical, Projects.ProjectDescription FROM Projects
INNER JOIN Customers ON Projects.ProjectCustomer = Customers.ID
LEFT JOIN Users ON Projects.ProjectLead = Users.ID
Что делает меня частью пути туда:
+---------------+--------------+-----------------+-------------------+-------------------+--------------------+
| ProjectNumber | CustomerName | ProjectLead | ProjectElectrical | ProjectMechanical | ProjectDescription |
+---------------+--------------+-----------------+-------------------+-------------------+--------------------+
| 0001 | Customer 1 | Bart Simpson | 4 | 6 | Project 1 |
| 0002 | Customer 2 | Stirling Archer | 5 | 5 | Project 2 |
| 0003 | Customer 3 | Bob Belcher | 6 | 4 | Project 3 |
+---------------+--------------+-----------------+-------------------+-------------------+--------------------+
Но для жизнь моя, я не могу заставить ProjectElectrical и ProjectMechanical делать то же самое, что ProjectLead. Я либо получить дубликаты ProjectLead, или я получаю значения null.
Может ли кто-нибудь помочь мне указать правильное направление? Нужно ли мне полностью переработать свой запрос или я на правильном пути?Я играл на скрипке в SQL Fiddle
Заранее спасибо за любые и все ответы!
1 ответ:
Вот обновленный запрос от скрипки:
select Projects.ProjectNumber, Customers.CustomerName, CONCAT_WS(' ', Users.FirstName, Users.LastName) AS ProjectLead, CONCAT_WS(' ', u2.FirstName, u2.LastName) AS ProjectElectrical, CONCAT_WS(' ', u3.FirstName, u3.LastName) AS ProjectMechanical, Projects.ProjectDescription FROM Projects INNER JOIN Customers ON Projects.ProjectCustomer = Customers.ID LEFT JOIN Users ON Projects.ProjectLead = Users.ID LEFT JOIN Users AS u2 ON Projects.ProjectElectrical = u2.ID LEFT JOIN Users AS u3 ON Projects.ProjectMechanical = u3.ID