https://school.programmers.co.kr/learn/courses/30/lessons/131537
join은 공통 칼럼이 있어야 합쳐 줄 수 있어요!
공통 칼럼이 없기 때문에 두 테이블을 union으로 합쳐 줘야하는데요!
SELECT 컬럼
FROM 테이블 1
WHERE 조건
UNION
SELECT 컬럼
FROM 테이블 2
WHERE 조건
이런 식으로 합쳐줘야합니다.
(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, USER_ID,SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31"
UNION
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31")
이런 식으로 쓰게 되면
SQL 실행 중 오류가 발생하였습니다.
The used SELECT statements have a different number of columns
이라는 결과가 나오는 데요. 이건 USER_ID 이라는 컬럼이 없기 때문입니다. 그래서 USER_ID 라는 컬럼을 하나 만들어 줍니다.
그러고 판매일 기준으로 오름차순, 상품 id 별로 오름차순, 유저 id 별로 오름차순을 해주면 정답입니다.
(SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, USER_ID,SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31"
UNION
SELECT DATE_FORMAT(SALES_DATE, "%Y-%m-%d") AS SALES_DATE, PRODUCT_ID, NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE BETWEEN "2022-03-01" AND "2022-03-31")
ORDER BY SALES_DATE, PRODUCT_ID, USER_ID