3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요.
inner join 방식
ID가 8인 경우 4세대이므로
WHERE문에 마지막 1세대가NULL인 조건을 추가한다.SELECT A.ID FROM ECOLI_DATA A JOIN ECOLI_DATA B ON A.PARENT_ID = B.ID JOIN ECOLI_DATA C ON B.PARENT_ID = C.ID WHERE C.PARENT_ID IS NULL ORDER BY 1 ;
WITH RECURSIVE TMP_TABLE AS ( SELECT ID, PARENT_ID, 1 AS N # 재귀 초기값 FROM ECOLI_DATA WHERE PARENT_ID IS NULL # 재귀 쿼리 종료 조건 UNION ALL SELECT A.ID, A.PARENT_ID, B.N + 1 AS N # 재귀값 카운트(세대 카운트) FROM ECOLI_DATA A JOIN TMP_TABLE B ON A.PARENT_ID = B.ID ) SELECT ID FROM TMP_TABLE WHERE N = 3 ORDER BY ID ;
https://school.programmers.co.kr/learn/courses/30/lessons/301650