자신에게 친절할 것 :)

Data Science/MySQL

[프로그래머스 sql] join 시 참조 관계 주의 할 것.

Tashapark 2025. 2. 19. 13:15
728x90
반응형

특정 세대의 대장균 찾기

 

수정 전

- 이전 포스팅 보면서 cte로 최대한 만들었음.

- 근데.. 굴러는 가는데 값이 안 뜸...ㅎ (그게 어디냐...)

WITH SECOND AS (
    SELECT S.ID, S.PARENT_ID
    FROM ECOLI_DATA F
    JOIN ECOLI_DATA S ON F.ID = S.PARENT_ID
    WHERE F.PARENT_ID = 'NULL'
)
SELECT T.ID 
FROM ECOLI_DATA T
JOIN SECOND S ON T.ID= S.PARENT_ID
WHERE S.PARENT_ID = T.ID
ORDER BY ID;

 

수정 후1

- 근데 그래도 안됌...

- 로직이 틀렸나보다..

WITH SECOND AS (
    SELECT S.ID, S.PARENT_ID
    FROM ECOLI_DATA F
    JOIN ECOLI_DATA S ON F.ID = S.PARENT_ID
    WHERE F.PARENT_ID IS NULL -- 문자열 아니고 is null로 변경
)
SELECT T.ID 
FROM ECOLI_DATA T
JOIN SECOND S ON T.ID= S.PARENT_ID -- where 굳이 필요없어서 없앰
ORDER BY ID;

 

수정 후 2

- 거의 다 했는데..

- 참조 관계 헷갈린게 너무 아쉽다.

- second의 id 가 Third의 parent_id가 되는 거니깐.. 주의할 것. 

- 또 필요한 것만 가지고 올 것!

WITH SECOND AS (
    SELECT S.ID -- parent_id 필요없음
    FROM ECOLI_DATA F
    JOIN ECOLI_DATA S ON F.ID = S.PARENT_ID
    WHERE F.PARENT_ID IS NULL
)
SELECT T.ID 
FROM ECOLI_DATA T
JOIN SECOND S ON T.PARENT_ID= S.ID -- 이거 잘 생각해야 해.. 참조 관계 헷갈리지 말기
ORDER BY T.ID;
728x90
반응형