작성
·
35
답변 3
0
안녕하세요. 질문을 잘 못 이해했네요.
64번 문제 제가 확인을 해봤어요. 말씀하신데로, 제가 설명할 때 실수한 게 있었네요.
위 쪽 쿼리는 순방향이 맞고, 아래쪽 쿼리는 역방향이 맞습니다. (강의 자료는 수정해두었습니다)
둘다 역방향으로 보인다고 말씀 하신 것은, 제가 답변 단 아래의 설명을 참고해주세요.
감사드립니다.
0
안녕하세요. 데이터코드랩입니다.
질문자님께서 둘 다 역방향으로 보인다고 생각하시는 것은 아마도 PRIOR
가 붙은 컬럼이 마치 "시작점"이 되는 것처럼 느껴지기 때문일 수 있습니다. 하지만 PRIOR
는 단순한 시작점을 의미하기보다는, "연결할 때 기준이 되는 이전 행의 값"을 지칭한다고 이해하는 것이 정확합니다.
CONNECT BY PRIOR 부모 = 자식
(순방향: 부모 → 자식)
이 구문은 PRIOR
가 붙은 부모
컬럼의 값이 현재 로우의 자식
컬럼의 값과 같을 때 연결하라는 의미입니다.
즉, "이전 로우의 부모 값"이 "현재 로우의 자식 값"과 같다는 조건으로 연결되므로, 계층을 따라 내려가는 부모에서 자식으로의 흐름이 만들어집니다.
예를 들어, 직원의 매니저(부모)가 누구인지 찾고, 그 매니저의 부하 직원(자식)을 찾는 식으로 하위 계층을 탐색하는 형태입니다.
CONNECT BY 자식 = PRIOR 부모
(역방향: 자식 → 부모)
이 구문은 "현재 로우의 자식
컬럼의 값이 이전 로우(부모)의 부모
컬럼의 값과 같을 때 연결"하라는 의미입니다.
즉, "현재 로우의 자식 값"이 "이전 로우(부모)의 부모 값"과 같다는 조건으로 연결되므로, 계층을 거슬러 올라가는 자식에서 부모로의 흐름이 만들어집니다.
예를 들어, 특정 직원의 상위 매니저(부모)가 누구인지, 그 매니저의 상위 매니저는 누구인지 계속해서 상위 계층을 탐색하는 형태입니다.
다시 한 번 설명하자면, CONNECT BY
에서 Prior
가 붙은 것은 이전의 의미입니다. 이전 로우의 부모, 이전 로우의 자식으로 생각하시면 이해하기가 더 쉬울 거예요.
시험이 얼마 안 남았네요. 꼭 합격 하시길 빌게요. 감사합니다. :)
0
안녕하세요, 인프런 AI 인턴입니다. 지혜님.
SQL에서 CONNECT BY
절은 계층적 쿼리를 작성할 때 사용되며, PRIOR
키워드를 통해 부모-자식 관계를 탐색할 수 있습니다.
CONNECT BY PRIOR 부모 = 자식
는 순방향 탐색을 의미합니다. 이는 부모에서 자식으로 내려가는 계층 구조를 탐색하는 방식입니다.
CONNECT BY 자식 = PRIOR 부모
는 역방향 탐색을 의미합니다. 이는 자식에서 부모로 올라가는 계층 구조를 탐색하는 방식입니다.
이에 대한 설명은 조금 혼동될 수 있지만, 명확하게 말하자면:
- 순방향 탐색: 부모에서 자식으로 계층 구조를 따라 내려감
- 역방향 탐색: 자식에서 부모로 계층 구조를 따라 올라감
이와 관련하여 추가적인 이해와 시각적 설명이 필요하실 경우, 아래 유사한 질문들을 참고해 보시면 도움이 될 것입니다:
질문 내용의 해설은 혼란스러울 수 있지만, 위 설명을 통해 제대로 이해하시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.