본문 바로가기

IT, Computer

[MySQL] SELF JOIN에 대해 알아보자

반응형

목차

    썸네일

     

     

     

    MySQL SELF 조인이란

    MySQL을 공부하며 제일 헷갈리는게 조인인데 (left join, right join, inner join 등등등) SELF JOIN이라는 놈도 있다ㅋㅋ SELF JOIN이란 무엇인가 . .  쉽게 말하면 자기 자신을 조인하는 놈이다. 여기서 생기는 의문

     

    띠용

     

    자기 자신을 조인이요?

    다음 표를 이용해서 self join의 예를 들어보겟슴 

    MySQL SELF 조인 예시

     

    TABLE A

    ID 이름 연봉 관리해야되는 놈 ID
    1 김셀프 5000 3
    2 김조인 4000 4
    3 김이너 3000 NULL
    4 김롸잇 5000 NULL

     

    여기서 ID 1은 ID3을, ID2는 ID4를 관리하고 있다. 이 때 관리하는 놈보다 관리 당하는 놈이 돈을 더 잘 버는 경우를 구하려면 워떻게 해야될까 . ?  이럴 땐 테이블을 새롭게 만들어서 '관리 해야되는 놈' 중심으로 조인을 해야된다. 왜냐 고것이 비교하는 a,b를 정하는 기준이 되기 때문

    SELECT * FROM A
    INNER JOIN A AS Manager ON A. 관리해야되는 놈 ID = Manager.id

     

    이렇게 하면 왼쪽은 관리 당하는 놈 오른쪽 테이블 관리하는 매니저가 된다. 그러니까

    ID 이름 연봉 관리해야되는 놈 ID ID 이름 연봉 관리해야되는 놈 ID
    1 김셀프 5000 3 3 김이너 3000 null
    2 김조인 4000 4 4 김롸인 5000 null

     

    이렇게 된다. 쟤네 둘이 INNER JOIN A AS Manager ON A. 관리해야되는 놈 ID = Manager.id  이 선언을 함으로써 만난것이다. 이제 문제에서 요구한 것 처럼 관리하는 놈이 관리자보다 많이버는 경우를 구하려면?

    SELECT에 * 대신 NAME 집어넣고

    INNER JOIN A AS Manager ON A. 관리해야되는 놈 ID = Manager.id하고 

    WHERE A.연봉 > MANAGER.연봉

    하면 되것죠?