2017-05-14 1 views
1

일부 정보를 표시하는 데 문제가 있습니다. 선생님이 내 DB를 변경하라고 요청했는데 내 앱에 큰 영향을줍니다.2 개 대신 하나의 테이블 사용

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 인 경우 "robert"의 recruiter_id가 1이고 "DO"의 user_id에 1이 해당하므로 "DO"라는 이름을 표시하려고합니다.

선생님이 나에게이 질문을하기 전에 나는 2 개의 다른 테이블을 사용했고, 훨씬 더 쉬웠다. 이제 어떻게 진행해야할지 모르겠습니다. 어떻게해야합니까?

답변

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 - user, r - recruiter. – GurV

+0

짧은 이유 : 확장되지 않습니다. 그리고 새로운 코드를 작성하는 것보다 오래된 코드를 읽고 편집하는 경향이 있기 때문에 항상 코드를 읽기 쉽도록 만들기 위해 항상 노력해야합니다. –