【发布时间】:2017-11-03 02:58:40
【问题描述】:
我有两张桌子PERSON 和PERSONRELATION。
在PERSONtable 上,我有PERSONpk、FIRSTNAME 和LASTNAME 列。
在PERSONRELATION 表上,我有MANAGER1fk,这是PERSONpk 的一个fk。
我正在尝试加入这两个表,将上面的所有字段带入并自行加入以添加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 = e.PERSONPK。 -
最后一个连接看起来有问题。人对人表在联接上不正确。它应该是
on m.personpk = rel.manager1fkrel 包含根据您在顶部的描述的员工和经理 ID。 -
我认为您不需要多个表。您应该能够只使用 PERSON 表中的 Manager1 键来完成同样的事情,然后加入回自身。这是一个普通的父子类型查询。正如您所描述的,如果您选择 e.PersonPK 和 rel.Manager1fk,它将是相同的数字。你能提供一个数据模型或小提琴吗?
标签: sql sql-server inner-join self-join