2016-06-16 3 views
0

У меня есть таблица, которая имеет следующую структурузаселить данные из присоединяемой таблицы в SQL

Служащей связь Таблица:

| FromEmployeeRelation | ToEmployeeRelation | CreatedAt | UpdatedAt | 
+----------------------+--------------------+-----------+-----------+ 
| 2     | 3     | Date  | Date  | 

связь Таблица

| Id | EmployeeId | CreatedAt | UpdatedAt | 
+----+------------+-----------+-----------+ 
|2 | 5   | Date  | Date  | 
|3 | 7   | Date  | Date  | 

Id из Relation таблицы в иностранном ключе для как FromEmployeeRelation, так и ToEmployeeRelation в таблице взаимоотношений с работниками

Я пытаюсь получить информацию от Сотрудника Relation таблицы с фактическим идентификатором работника в результатах

Результат

| FromEmployeeId | ToEmployeeId | FromEmployeeRelation | ToEmployeeRelation 
+----------------+--------------+----------------------+------------------- 
| 5    | 7   | 2     | 3 

От присоединиться я могу получить EmployeeID от одного отношения, но я не уверен, как получить идентификатор сотрудника для оба эти отношения.

Как это можно сделать? Благодаря

ответ

2

Попробуйте это:

select e1.EmployeeId as FromEmployeeId , 
     e2.EmployeeId as ToEmployeeId , 
     er.FromEmployeeRelation, 
     er.ToEmployeeRelation 
from emp_relation er 
inner join emp e1 on er.FromEmployeeRelation=e1.id 
inner join emp e2 on er.ToEmployeeRelation=e2.id 

SQL скрипку: http://sqlfiddle.com/#!9/ebffe/2

2

Вариант 1: присоединение к одной таблице на двух разных колонках, SQL Fiddle

SELECT 
from_tbl.EmployeeId AS FromEmployeeId, 
to_tbl.EmployeeId AS ToEmployeeId, 
e.FromEmployeeRelation, 
e.ToEmployeeRelation 
FROM EmployeeRelation e 
INNER JOIN Relation from_tbl ON e.FromEmployeeRelation = from_tbl.Id 
INNER JOIN Relation to_tbl ON e.ToEmployeeRelation = to_tbl.Id 

Вариант 2: с помощью вложенных запросов , SQL Fiddle

SELECT 
(SELECT from_tbl.EmployeeId FROM Relation from_tbl WHERE e.FromEmployeeRelation = from_tbl.Id) AS FromEmployeeId, 
(SELECT to_tbl.EmployeeId FROM Relation to_tbl WHERE e.ToEmployeeRelation = to_tbl.Id) AS ToEmployeeId, 
e.FromEmployeeRelation, 
e.ToEmployeeRelation 
FROM EmployeeRelation e 
Смежные вопросы