2016-04-01 2 views
1

Я хочу присоединиться к двум таблицам, но над двумя полями, которые находятся в другой таблице. Два столбца из одной таблицы разными идентификаторами. Моя структура таблицы ниже:SQL множественное объединение с одинаковыми полями

Units

+---+---------+----+ 
| Uid | UnitName 
+---+--------------+ 
| 1 | Unit A  | 
| 2 | Unit B  | 
| 3 | Unit C  | 
+----+---------+---+ 

Лица

+---+---------+-------------------+------------+------+ 
| Pid | PerName   | PerUnit | PreviousPerUnit | 
+---+---------+-------------------+------------+------+ 
| 1 | John    | 1  | 3   | 
| 2 | Alice   | 2  | 1   | 
| 3 | Mel    | 1  | 1   | 
+----+---------+------------------+------------+------+ 

Так что я хочу вывести

+---+---------+-------------------+------------+----+ 
| # | PerName   | UnitName | PreUnitName | 
+---+---------+-------------------+------------+----+ 
| 1 | John    | Unit A  | Unit C  | 
| 2 | Alice   | Unit B  | Unit A  | 
| 3 | Mel    | Unit A  | Unit A  | 
+----+---------+------------------+------------+----+ 

Как я могу получить этот вывод?

ответ

0

Попробуйте

SELECT p.PerName,perUnitTable.UnitName,PreviousUnitTable.UnitName 
FROM Person p 
INNER JOIN Units perUnitTable ON p.PerUnit=perUnitTable.Uid 
INNER JOIN Units PreviousUnitTable ON p.PerUnit=PreviousUnitTable.Uid 
+0

Спасибо JaydipJ за ур ответ. Все нормально. – mbayrak

0

Вам нужно два JOIN S:

SELECT 
    [#]   = p.Pid, 
    Pername  = p.PerName, 
    UnitName = u1.UnitName, 
    PerUnitName = u2.UnitName 
FROM Persons p 
INNER JOIN Units u1 
    ON u1.Uid = p.PerUnit 
INNER JOIN Units u2 
    ON u2.Uid = p.PreviousPerUnit 
+0

Спасибо Феликс за ур ответ. Все нормально. – mbayrak

Смежные вопросы