2022. 3. 29. 03:36ㆍSite/SQL ZOO
self join : 같은 테이블을 조인 -> 테이블내의 여러개의 컬럼들이 연관관계가 있을때 활용됨
2개 이상의 동일한 테이블을 이용해서 조인을 해야되는데 동일한 테이블이라도 각자의 역할이 다름
stops 테이블의 id, name을 조회하고 num과 company의 조건을 수행하기 위해 stops과 route의 공통키인[id, stop]을 조인
COUNT가 2라는 조건을 추가해야 되므로 company, num을 그룹화하여 HAVING문에 조건 추가
Craiglockhart와 London Road를 경유하는 정보를 알기 위해서는 route테이블의 stop컬럼이 필요한데 각 1개씩 밖에 들어있지 않음 -> self join을 사용하여 route a, route b 2개의 테이블을 생성해서 각각의 stop의 정보를 2개씩 접근이 가능함
이번에는 5번과 달리 숫자가 아닌 문자열로 접근
self join으로 route a, b를 join하는 것은 동일하지만 name으로 조건을 주긴 위해서는 stops테이블의 name에 접근해야됨
-> 추가적으로 stops테이블의 stopa, stopb 2개의 테이블을 생성하여 조인하고 각각의 name에 접근해야됨
여기서는 DISTINCT를 활용함(self join한 route A와 route B의 테이블의 중복값 출력 방지)
6번과 비슷함
-> route 테이블을 self join하고 stops 테이블에 stopa, b을 각각 조인하여 name에 접근
Craiglockhart에 도달 수 있는 정류장을 알기 위해선 stop.name에 접근하여 값을 Craiglockhart로 주면 경유하는 모든 정류하는 알 수 있음
-> 마찬가지로 self join으로 route테이블을 조인하고 stop.name을 Craiglockhart 라는 문자열로 주기 위하여 추가적으로 stops 테이블을 조인하고 WHERE문에 stops의 name을 Craiglockhart 줌
self join이 마지막 답게 호락호락 보내주지 않는 것 같습니다
10번 문제는 삽질을 엄청했는데 아직 부족한 거 같아서 해결을 못했습니다
좀 더 공부하고 다시 풀어서 돌아오겠습니다...
'Site > SQL ZOO' 카테고리의 다른 글
SQL ZOO[MySQL]Self join Quiz (0) | 2022.03.29 |
---|---|
SQL ZOO[MySQL]Using Null Quiz (0) | 2022.03.20 |
SQL ZOO[MySQL]Using Null (0) | 2022.03.20 |
SQL ZOO[MySQL]JOIN Quiz 2 (0) | 2022.03.15 |
SQL ZOO[MySQL]More JOIN operations (0) | 2022.03.15 |