본문 바로가기
DB/Oracle

ON 조건 없이 조인(JOIN) 하는 방법

by 융댜 2019. 5. 7.
반응형

회사에서 조인(JOIN)을 하려 하는데 조건 없이 조인해야 했습니다.

보통 SQL에서 조인할 때 아래와 같은 형식으로 합니다.

SELECT (Distinct) Column, Column, Column
FROM  첫번째 Table Name 
LEFT/RIGHT JOIN 두번째 Table Name
ON 조인 조건

여기서 ON 부분이 문제였는데 제가 하려고 했던 테이블에서는

생각해보면 아래처럼 WHERE 부분으로도 해결할 수 있지만

SELECT (Distinct) Column, Column, Column
FROM  첫번째 Table Name 
두번째 Table Name
WHERE 검색 조건

첫 번째 테이블과 두 번째 테이블이 연관되는 것이 없었습니다.

어떤 상황이었는지 예를 들면

상품정보 테이블 A

상품 판매 금액
냉장고 150만원
진공 청소기 100만원
노트북 200만원

생산연도 테이블 B

생산연도
2017
2018
2019

 

결과 

생산연도 상품 판매금액
2017 냉장고 150만원
2017 진공 청소기 100만원
2017 노트북 200만원

 

결과 테이블처럼 값을 뽑아 내고 싶었습니다.

1.CROSS JOIN

SELECT A.상품, A.판매금액, B_TMP.생산연도 FROM A CROSS JOIN (SELECT 생산연도 FROM B ORDER BY 생산연도 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP

2.조인안하고 FROM 에서 조건

SELECT A.상품, A.판매금액, B_TMP.생산연도 FROM A, (SELECT 생산연도 FROM B ORDER BY 생산연도 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP

3. ON 조건 없이 조인하는 방법

SELECT A.상품, A.판매금액, B_TMP.생산연도 FROM A INNER JOIN (SELECT 생산연도 FROM B  ORDER BY 생산연도 ASC FETCH FIRST 1 ROWS ONLY) AS B_TMP ON 1 = 1

ON 1=1 나는 이 답을 찾는데 긴 시간이 걸린 건 아니었습니다만 답이 정말 간단해서 아주 놀라웠습니다.

4. 셀렉을 두 번 하는 방법

SELECT A.상품, A.판매금액, (SELECT 생산연도 FROM B ORDER BY 생산연도 ASC FETCH FIRST 1 ROWS ONLY) AS 생산연도 FROM A

 

 

반응형

댓글