데이터베이스

[DB] 순환질의 (Recursive query)

KyooDong 2020. 12. 8. 21:54
728x90

순환질의 (Recursive query)

회사에서 “사업기획부 산하의 모든 부서를 알아오라" 라는 요구사항이 있을 수 있음

보통의 DB에서는 자기 직속 상위(부모) 부서만을 갖고 있기에 순환질의를 통해 해결할 수 있음

일반적인 Tree 구조에서 Search 하는 문제를 생각하면 이해가 쉬움

courseID : 과목 아이디

prereqID : 위 과목을 듣기 위해 미리 들어야하는 선이수 과목 아이디

WITH RECURSIVE recursivePrereq(courseID, prereqID) AS (SELECT courseID, prereqID FROM prereq)
UNION
SELECT recursivePrereq.courseID, prereq.prereqID FROM recursivePrereq, prereq
WHERE recursivePrereq.prereqID = prereq.courseID
SELECT * FROM recursivePrereq;