Data Science/SQL
[프로그래머스 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
반응형