SQL Multiple使用相同的字段连接

时间:2016-04-01 07:59:20

标签: sql-server

我想加入两个表,但是在另一个表中超过两个字段。一个表中的两列由不同的ID组成。 我的表结构如下:

单元

+---+---------+----+
| 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      |
+----+---------+------------------+------------+----+  

如何获得此输出?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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