프로그래머스 ORACLE 조건에 맞는 도서와 저자 리스트 출력하기DB/쿼리 문제풀이2023. 10. 6. 15:02
Table of Contents
SELECT A.BOOK_ID AS BOOK_ID
, B.AUTHOR_NAME AS AUTHOR_NAME
, TO_CHAR(A.PUBLISHED_DATE, 'YYYY-MM-DD') AS PUBLISHED_DATE
FROM BOOK A --기준테이블
INNER JOIN AUTHOR B
ON A.AUTHOR_ID = B.AUTHOR_ID
WHERE A.CATEGORY ='경제'
ORDER BY PUBLISHED_DATE;
📌TO_CHAR(날짜 변환), 조인 기준 테이블
📌LEFT JOIN과 RIGHT JOIN
데이터베이스에서 두 개의 테이블을 연결할 때 사용되는 조인 유형입니다.
이 두 조인의 차이는 연결하는 테이블의 순서와 결과에 있습니다.
- LEFT JOIN:
- 왼쪽 테이블을 기준으로 하여 오른쪽 테이블과 연결합니다.
- 왼쪽 테이블의 모든 행은 결과에 포함됩니다.
- 왼쪽 테이블과 오른쪽 테이블 간에 매칭되는 행이 없는 경우에도 왼쪽 테이블의 값은 결과에 나타나며 오른쪽 테이블의 값은 NULL로 표시됩니다.
- RIGHT JOIN:
- 오른쪽 테이블을 기준으로 하여 왼쪽 테이블과 연결합니다.
- 오른쪽 테이블의 모든 행은 결과에 포함됩니다.
- 오른쪽 테이블과 왼쪽 테이블 간에 매칭되는 행이 없는 경우에도 오른쪽 테이블의 값은 결과에 나타나며 왼쪽 테이블의 값은 NULL로 표시됩니다.
Customers 테이블:
CustomerID CustomerName
1 | John |
2 | Emily |
3 | Michael |
Orders 테이블:
OrderID CustomerID Product
101 | 1 | Phone |
102 | 1 | Laptop |
103 | 2 | Tablet |
- LEFT JOIN:결과:CustomerName Product
John Phone John Laptop Emily Tablet Michael NULL - SELECT Customers.CustomerName, Orders.Product FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
- RIGHT JOIN:결과:CustomerName Product
John Phone John Laptop Emily Tablet NULL Keyboard - SELECT Customers.CustomerName, Orders.Product FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
여기서, RIGHT JOIN을 사용할 때는 Customers 테이블에 없는 CustomerID가 3인 주문이 있습니다. 이 경우에도 RIGHT JOIN을 사용하면 오른쪽 테이블의 값은 결과에 포함되며, 왼쪽 테이블의 값은 NULL로 나타납니다.
📌JOIN ON 절 ,WHERE절 차이
- ON : 조인조건 명시 —>어떤 열들을 기준으로 테이블을 연결할지
- WHERE : 그냥 필터링
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE Orders.OrderDate > '2023-01-01';
위 쿼리는 **Customers**와 Orders 테이블을 **CustomerID**를 기준으로 조인하고, 그 결과 중에서 **OrderDate**가 '2023-01-01'보다 큰 주문만을 검색합니다. 이 경우 ON 절은 조인 조건을 설정하고, WHERE 절은 조인된 결과를 추가적으로 필터링합니다.
요약하면, ON 절은 조인 조건을 설정하고 WHERE 절은 조인된 결과를 추가적으로 필터링할 때 사용됩니다.
'DB > 쿼리 문제풀이' 카테고리의 다른 글
프로그래머스 ORACLE 없어진 기록 찾기 (0) | 2023.10.06 |
---|---|
프로그래머스 ORACLE 상품 별 오프라인 매출 구하기 (0) | 2023.10.06 |
프로그래머스 ORACLE 카테고리 별 도서 판매량 집계하기 (0) | 2023.10.06 |
프로그래머스 ORACLE 식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2023.10.06 |
프로그래머스 ORACLE 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.10.06 |