반응형
LeetCode 175. Combine Two Tables
문제는 Person, Address 테이블을 가지고 조회하는데
두 테이블을 합쳐서 가져와야 하며
Person 테이블은 반드시 PersonId 값이 있어야 하지만
Address 테이블은 합쳤을 경우 값이 없어도 된다
해당 문제는 Person, Address 두 테이블을
Person 테이블을 기준으로 JOIN한 뒤에
값을 가져오는 문제인데
두 테이블에 모두 PersionId 컬럼이 있고
Person 테이블에서 PersonId가 PK이므로
이걸 이용해 JOIN 시켜주면 되겠다
JOIN은 오라클 조인, ANSI 조인이 있으며
방법을 모를 시에는
아래 글을 참고하고 풀어주면 되겠다
풀이는 아래와 같다
먼저 오라클 JOIN을 사용할 경우에는
값이 없어도 되는 테이블에
(+)를 붙여주게 되는데
즉
WHERE 테이블 = 테이블(+)
이런 식으로 사용하면 되겠다
다음으로는 ANSI JOIN을 사용할 경우인데
어느 테이블을 기준으로 합칠 것인지에 따라
LEFT, RIGHT OUTER JOIN을 사용하며
ON 테이블.컬럼 = 테이블.컬럼
으로 WHERE을 사용하지 않고
JOIN을 하게 된다
마지막으로 풀이에 사용한 코드는
아래를 참고해주면 된다
-- ORACLE JOIN을 사용할 경우
SELECT A.FIRSTNAME, A.LASTNAME, B.CITY, B.STATE
FROM PERSON A, ADDRESS B
WHERE A.PERSONID = B.PERSONID(+)
-- ANSI JOIN을 사용할 경우
SELECT A.FIRSTNAME, A.LASTNAME, B.CITY, B.STATE
FROM PERSON A LEFT OUTER JOIN ADDRESS B
ON A.PERSONID = B.PERSONID
반응형
'SQL > 문제풀이' 카테고리의 다른 글
LeetCode 176. Second Highest Salary 오라클 풀이글 (0) | 2020.06.08 |
---|---|
프로그래머스 DATETIME에서 DATE로 형 변환 풀이(MySQL) (0) | 2019.09.09 |
프로그래머스 오랜 기간 보호한 동물(2) 풀이(MySQL) (0) | 2019.09.09 |
프로그래머스 중성화 여부 파악하기 풀이(MySQL) (0) | 2019.09.09 |
프로그래머스 NULL 처리하기 풀이(MySQL) (0) | 2019.09.09 |
댓글