在尝试弄清楚如何在自己的表上查询结果和联接数据时,我遇到了一些困难。
“我的雇员”表包含以下标题:
Employee_Nbr
First_Name
Last_name
Manager_Nbr
Email
例如,此“雇员”表包含诸如以下数据:
1. 21 Mickey Mouse 10 mmouse@disney.com
2. 5 Donald Duck 10 dduck@disney.com
3. 8 Pluto Dog 21 pdog@disney.com
4. 10 Walt Disney 0 wdisney@disney.com
5. 0 El Presidente NULL president@disney.com
我如何编写一个可遍历表格的脚本,查询自身以匹配经理编号,并在查询结果的末尾附加经理的电子邮件地址,例如:
1. 21 Mickey Mouse 10 mmouse@disney.com wdisney@disney.com
2. 5 Donald Duck 10 dduck@disney.com wdisney@disney.com
3. 8 Pluto Dog 21 pdog@disney.com mmouse@disney.com
4. 10 Walt Disney 0 wdisney@disney.com president@disney.com
5. 0 El Presidente *NULL* president@disney.com *NULL*
我不太关心最高经理。
我写了这个查询,但是它给了我一些非常奇怪的结果,例如给每位员工一行关于其经理所拥有的员工的结果:
SELECT
t1.Employee_Nbr,
t1.First_Name,
t1.Last_Name,
t1.Manager_Nbr,
t1.Email,
t2.Email AS Manager_Email
FROM
dbo.Employees t1
LEFT JOIN
dbo.Employees t2 on t2.Manager_Nbr = t1.Manager_Nbr
有人可以帮我解决我的查询吗?
非常感谢您。
答案 0 :(得分:0)
关闭时,只需在t1.Manager_Nbr
条件下使用t1.Employee_Nbr
而不是JOIN
,因为t1
是基表t2
是Manager表,因此,获取管理员编号,而不是Employee_Nbr
SELECT t1.Employee_Nbr,
t1.First_Name,
t1.Last_Name,
t1.Manager_Nbr,
t1.Email,
t2.Email AS Manager_Email
FROM dbo.Employees t1
LEFT JOIN dbo.Employees t2 on t2.Employee_Nbr = t1.Manager_Nbr