2015-08-15 62 views
0

我已经尝试了几个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的名称?

回答

0

请尝试查询如图所示。您发布的查询的问题是,您并未选择团队领导者的姓名,而只是原来的员工。为了获得团队领导者的姓名,您必须加入员工表的另一个实例(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"; 

干杯,

+0

我取消了对语句2号和做的伎俩......太感谢你了。 – Mikael1

+0

好吧,我试图删除第二个连接,这是一个错误来自哪里,他们只显示团队领导的名字,也许删除它是一个很大的错误,无论如何,我试过你的查询,但说第6行错误...第二个声明。 – Mikael1

+0

编辑遵循MySQL语法 – TheBrokenSpoke

0

您需要另一个加盟用于获取结果:

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'; 

我加左加入了employeee没有teamleader。