2017-05-14 76 views
1

我有一個問題來顯示一些信息。我的老師讓我更換我的數據庫,這對我的應用程序有很大的影響。使用一個表而不是兩個

我在MySql中有一個表,列「user_id」,「lastname」和「recruiter_id」。 recruiter_id對應於招聘者的user_id。 例如:

user_id lastname recruiter_id 
1  DO  NULL 
2  SMITH  1 
3  ROBERT 1 

在MySQL中,我想證明誰是招聘的人的名字。 例如,對於user_id = 3,我想顯示名稱「DO」,因爲「robert」的recruiter_id是1,而1對應於「DO」的user_id。

在我的老師問我這個之前,我有兩張不同的表格,而且這很容易。現在我不知道如何繼續。我該如何做到這一點?

回答

0

這需要一個self-join

SELECT a.lastname AS name, b.last_name as recuirter_name 
FROM  users a 
LEFT JOIN users b ON a.recruiter_id = b.user_id 
+0

請不要教新手別名表,單字母域名。這是一個非常糟糕的做法。 –

+0

我要試試這個,我只用其他表加入... – saga

+0

你有什麼建議@tereško? – saga

0

您可以輕鬆地做到這一點使用左自聯接:

select u.*, 
    r.lastname as recruiter_name 
from your_table u 
left join your_table r on u.recruiter_id = r.user_id; 
+0

請不要教新手別名表到單個字母的名稱。這是一個非常糟糕的做法。 –

+1

@tereško - 嗯,這取決於。如果它可以是有意義的,我更喜歡更小的別名。在這種情況下,u - 用戶,r - 招聘人員。 – GurV

+0

簡短的原因:它沒有規模。而且你總是不得不努力使代碼更具可讀性,因爲你傾向於閱讀和編輯舊代碼,而不是編寫新代碼。 –

相關問題