繁体   English   中英

仅使用主键和外键获取值

[英]Getting a value using only the primary key and foreign key

我已经尝试了几个queriesjoins ,但无法解决此问题。

我有2张桌子

Employee
--------
ID(PK)                                                                                                                                     
Firstname                                                                                                                                                  
Lastname                                                                                                                                                  
ContactNumber                                                                                                                                                  
Position                                                                         
TeamleaderID(FK) //*which is only applicable if the position isn't a team leader*//

Team Leader
----------
ID(PK)                                                                         
employeeID(FK)  

Employee表包含2个数据,第一个是。

ID(PK) - 1                                                                         
Firstname - Mikael                                                                                                                               
Lastname - Roque                                                                                                                     
ContactNumber - 0010101                                                                                                             
Position - TeamLeader                                                                                                                                                                                              
TeamleaderID(FK) - Null 

第二个是

ID(PK) - 2                                                                         
Firstname - Rinnie                                                                         
Lastname - Hoshino                                                                         
ContactNumber - 0010101                                                                         
Position - Engineer                                                                         
TeamleaderID(FK) - 1

第三个是teamleader

ID(PK) - 1                                                                         
employeeID(FK) - 1   

我已经试过这个查询

SELECT employee.*                                                                         
FROM employee                                                                         
JOIN teamleader                                                                         
ON employee.teamleader_id=teamleader.teamleader_id                                                                         
Where employee.firstname='Rinnie';  

但结果是仅显示了teamleader ID。 是否可以选择所有employee数据,包括teamleader的姓名?

您需要另一个联接才能获得结果:

SELECT employee.*,leader.*
FROM employee
LEFT JOIN teamleader ON employee.teamleader_id=teamleader.teamleader_id
LEFT JOIN employee as leader ON teamleader.employeeID = leader.ID
Where employee.firstname='Rinnie';

我为没有团队领导者的员工添加了左加入。

请尝试如图所示的查询。 您发布的查询的问题在于您没有选择团队负责人的姓名,而只选择了原始员工。 要获得团队负责人的姓名,您还必须加入到employee表的另一个实例(employee_1),并链接到表teamleader中的employeeId字段。

SELECT e.*, m.FirstName as TeamLead
FROM employee e
join teamlead on e.TeamleaderId = teamlead.ID
join employee m on teamlead.employeeID = m.ID
WHERE e.FirstName = "Rinnie";

干杯,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM