2015-08-15 61 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。