Связи двух таблиц по двум столбцам

March

Новичок
Связи двух таблиц по двум столбцам

Есть две таблицы:

Код:
----------------------------------------------------
|                       data                       |
----------------------------------------------------
|      `id`      | req_engineer_1 | req_engineer_2 |
|     int(10)    |    int(10)     |    int(10)     |
| auto_increment |                |                |
----------------------------------------------------
Код:
--------------------------------
|             users            |
--------------------------------
|      `id`      |    name     |
|     int(10)    | varchar(30) |
| auto_increment |             |
--------------------------------
В стобцах `req_engineer_1` и `req_engineer_2` таблицы `data` содержаться числовые индентификаторы которые есть в столбце `id` таблицы `users`. Тоесть на каждую строчку таблицы `data` по запросу на `data.req_engineer_1`=`users.id` или `data.req_engineer_2`=`users.id` найдётся строчка из `users`. Поле req_engineer_2 в некоторых случаях может быть незаполнена (Значение по умолчанию - 0), тогда как req_engineer_1 заполнена всегда.

Требуется: при выборке из таблицы `data` находить соответствия полю `req_engineer_1` в таблице `users` произведя поиск `data.req_engineer_1` = `users.id` и выводить записи, но только уже с соответствиями `req_engineer_1` как `users.name`. Так-же и с `req_engineer_2` - искать в таблице `users` `id-шник`, смотреть `name` и выводить вместе со всем остальным:
Код:
--------------------------------------------------------------------------------------------------------------------
|                                                Выборка из таблицы                                                | 
--------------------------------------------------------------------------------------------------------------------
|      `id`      | req_engineer_1 | req_engineer_2 | name(по req_engineer_1) | name(по req_engineer_2)             |
|     int(10)    |    int(10)     |     int(10)    |       varchar(30)       |      varchar(30)                    |
| auto_increment |                |                |                         | (если ненайдено - оставлять пустым) |                                     
--------------------------------------------------------------------------------------------------------------------
Сделать так с одним полем у меня получается:

SELECT data.id , data.req_engineer_1 , users.name
FROM `data`
LEFT JOIN `users` ON data.req_engineer_1 = users.id

Но вот как впихнуть в запрос поиск по req_engineer_2? и соответственно в конечном выводе чтобы добавлялась ещё одна колонка но уже со значениями для `req_engineer_2` соответсвующие полю `name` в таблице `users` найденные по поиску `data.req_engineer_2` = `users.id`?
 

SunDrop

Помощник поисков. робота
Как минимум ты два раза можешь приджойнить табличку users
[SQL]
SELECT data.id , data.req_engineer_1 , u1.name, u2.name
FROM `data`
INNER JOIN `users`AS u1 ON data.req_engineer_1 = users.id
LEFT JOIN `users`AS u2 ON data.req_engineer_2 = users.id
[/SQL]
 

March

Новичок
В тупую скопировал в phpMyAdmin:

SQL-запрос:

SELECT data.id, data.req_engineer_1, u1.name, u2.name
FROM `data`
INNER JOIN `users` AS u1 ON data.req_engineer_1 = users.id
LEFT JOIN `users` AS u2 ON data.req_engineer_2 = users.id
LIMIT 0 , 30

Ответ MySQL:
#1109 - Unknown table 'users' in on clause
 

chira

Новичок
здесь проблема с алиасами
...
INNER JOIN `users` AS u1 ON data.req_engineer_1 = u1.id
LEFT JOIN `users` AS u2 ON data.req_engineer_2 = u2.id
...
 
Сверху