2016-10-13 2 views
0

У меня есть 3 таблицыРеализовать 3 таблицы присоединиться к

employees  
------------- 
|idEmployee | 
| name | 

user-employee 
----------------       
| idUser  |-> MongoID  
| idEmployee |-> FK employees.idEmployee  

employees-supervisor 
-------------------- 
| idEmployee |-> FK employees.idEmployee   
| idUser  |-> FK user-employee.idUser  

Я хочу следующую таблицу

idEmployee | name | idUser | nameSupervisor 
    1  | John |  A2 |  Jane 

таблицы Сотрудник имеет всех сотрудников из компании, пользователь-работник имеет все сотрудники, которые являются пользователями системы user-employee.idUser является пользователем документа mongo, а у сотрудника-супервизора есть список, который соответствует idUser (mongoid) с идентификатором сотрудника (mysql)

Я хочу, чтобы показать всех сотрудников с их соответствующим руководителем (если таковые имеются), прямо сейчас я получаю idUser

SELECT employees.*, e1.idUser as idSupervisor, e2.name as supervisor 
    FROM employees 
    left JOIN user-employee e1 ON e1.idEmployee = employees.idEmployee 

Это показывает

idEmployee | name | idUser | 
    1  | John | 5887Ab | 

У меня уже есть идентификатор руководителя, теперь как я совпадающее Id с именем, которое находится в таблице user-employee?

+0

Создать один из них и поста ссылка: http://sqlfiddle.com/ – mikeb

+0

Не используйте минус ('-') в идентификаторе таблицы/столбца – Strawberry

ответ

0

Если ключ может не совпадать с нами можно использовать левое соединение

SELECT employees.*, e1.idUser as idSupervisor, e3.name as supervisor 
FROM employees 
left JOIN `user-employee` e1 ON e1.idEmployee = employees.idEmployee 
left JOIN `employees-supervisor` e2 on on e2.idUser = e.idUser 
left JOIN employees e3 on e2.idEmployee = e3.idEmployee; 

, но если ключ betwen таблиц соответствия вы должны использовать внутреннее соединение

SELECT employees.*, e1.idUser as idSupervisor, e3.name as supervisor 
FROM employees 
INNER JOIN `user-employee` e1 ON e1.idEmployee = employees.idEmployee 
INNER JOIN `employees-supervisor` e2 on on e2.idUser = e.idUser 
INNER JOIN employees e3 on e2.idEmployee = e3.idEmployee; 
Смежные вопросы