内连接后接自连接
Inner join followed by a self join
我有两个 tables PERSON
和 PERSONRELATION
。
在 PERSON
table 上,我有 PERSONpk
、FIRSTNAME
和 LASTNAME
.
列
在 PERSONRELATION
table 上我有 MANAGER1fk
这是 PERSONpk
的 fk。
我正在尝试加入两个 table,带入上面的所有字段并自行加入以添加 MANAGERFIRSTNAME
和 MANAGERLASTNAME
。这是我所做的,但显然不正确:
Select PERSONpk, MANAGER1FK,e.FIRSTNAME,e.LastName,m.FIRSTNAME,M.LASTNAME
FROM dbo.PERSON e
INNER JOIN dbo.PERSONRELATION rel
ON rel.PERSONFK = PERSONPK
INNER JOIN dbo.PERSON m ON e.PERSONpk = m.MANAGER1FK
三期:
- 你最后一次加入是错误的(当我相信你想加入 rel.Manager1FK 到 m 时,你正在加入 e。线性地考虑......我有一个员工......一个员工可以有很多关系...每个关系都与另一个员工...并且根据列名,这些关系是员工经理关系。所以你从 P-->REL-->M M--P 不存在 w/o REL 在您的数据示例中。
- 您应该在第 2 次加入时使用别名 e.personpk
- 假设你必须引用 person 两次,person 的所有列都必须使用别名(即使在 select 中)
Table personrelation 包含员工和经理对人的外键;因此,您需要从 personrelation (MANAGER1fk) 加入第二个 fk 字段(这不是自加入)如果层次结构全部由个人维护,那将是自加入。
SELECT e.PERSONpk
, rel.MANAGER1FK
, e.FIRSTNAME
, e.LastName
, m.FIRSTNAME
, M.LASTNAME
FROM dbo.PERSON e
INNER JOIN dbo.PERSONRELATION rel
ON rel.PERSONFK = e.PERSONPK
INNER JOIN dbo.PERSON m
ON m.PERSONpk = rel.MANAGER1FK
我有两个 tables PERSON
和 PERSONRELATION
。
在 PERSON
table 上,我有 PERSONpk
、FIRSTNAME
和 LASTNAME
.
在 PERSONRELATION
table 上我有 MANAGER1fk
这是 PERSONpk
的 fk。
我正在尝试加入两个 table,带入上面的所有字段并自行加入以添加 MANAGERFIRSTNAME
和 MANAGERLASTNAME
。这是我所做的,但显然不正确:
Select PERSONpk, MANAGER1FK,e.FIRSTNAME,e.LastName,m.FIRSTNAME,M.LASTNAME
FROM dbo.PERSON e
INNER JOIN dbo.PERSONRELATION rel
ON rel.PERSONFK = PERSONPK
INNER JOIN dbo.PERSON m ON e.PERSONpk = m.MANAGER1FK
三期:
- 你最后一次加入是错误的(当我相信你想加入 rel.Manager1FK 到 m 时,你正在加入 e。线性地考虑......我有一个员工......一个员工可以有很多关系...每个关系都与另一个员工...并且根据列名,这些关系是员工经理关系。所以你从 P-->REL-->M M--P 不存在 w/o REL 在您的数据示例中。
- 您应该在第 2 次加入时使用别名 e.personpk
- 假设你必须引用 person 两次,person 的所有列都必须使用别名(即使在 select 中)
Table personrelation 包含员工和经理对人的外键;因此,您需要从 personrelation (MANAGER1fk) 加入第二个 fk 字段(这不是自加入)如果层次结构全部由个人维护,那将是自加入。
SELECT e.PERSONpk
, rel.MANAGER1FK
, e.FIRSTNAME
, e.LastName
, m.FIRSTNAME
, M.LASTNAME
FROM dbo.PERSON e
INNER JOIN dbo.PERSONRELATION rel
ON rel.PERSONFK = e.PERSONPK
INNER JOIN dbo.PERSON m
ON m.PERSONpk = rel.MANAGER1FK