2017-05-14 98 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

简短的原因:它没有规模。而且你总是不得不努力使代码更具可读性,因为你倾向于阅读和编辑旧代码,而不是编写新代码。 –

相关问题