■ 사용 문법
서브 쿼리, IS NULL
■ 사용 방법
서브쿼리를 이용해 자식 ID를 찾아 3세대 까지 이동하였다.
다만, 내 방식에는 반복이 계속되었는데 3세대가 아니라 10세대를 구하라고 했다면 풀기 힘들 것이다.
찾아보니 WITH RECURSIVE 를 사용하여 재귀 문제를 풀 수 있었다.
■ 코드
-- 코드를 작성해주세요
SELECT C.ID
FROM ECOLI_DATA AS C,
(
SELECT A.ID
FROM ECOLI_DATA AS A,
(SELECT ID
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL) AS B
WHERE A.PARENT_ID = B.ID
) AS D
WHERE C.PARENT_ID = D.ID
ORDER BY C.ID
*WITH RECURSIVE 사용
WITH RECURSIVE GEN_DATA AS (
SELECT
ID,
PARENT_ID,
1 AS GEN
FROM ECOLI_DATA
WHERE PARENT_ID IS NULL
UNION ALL
SELECT
A.ID,
A.PARENT_ID,
(GEN + 1) AS GEN
FROM ECOLI_DATA AS A
INNER JOIN GEN_DATA g ON A.PARENT_ID = g.ID
)
SELECT ID FROM GEN_DATA WHERE GEN = 3 ORDER BY ID
728x90
'개발 > SQL' 카테고리의 다른 글
프로그래머스SQL_서울에 위치한 식당 목록 출력하기 (0) | 2024.05.07 |
---|---|
프로그래머스SQL_부모의 형질을 모두 가지는 대장균 찾기 (0) | 2024.05.06 |
프로그래머스SQL_대장균의 크기에 따라 분류하기 2 (0) | 2024.05.04 |
프로그래머스SQL_대장균의 크기에 따라 분류하기 1 (0) | 2024.05.03 |
프로그래머스SQL_대장균들의 자식의 수 구하기 (0) | 2024.05.02 |