内连接后接自连接

Inner join followed by a self join

我有两个 tables PERSONPERSONRELATION

PERSONtable 上,我有 PERSONpkFIRSTNAMELASTNAME.

PERSONRELATION table 上我有 MANAGER1fk 这是 PERSONpk 的 fk。

我正在尝试加入两个 table,带入上面的所有字段并自行加入以添加 MANAGERFIRSTNAMEMANAGERLASTNAME。这是我所做的,但显然不正确:

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