공부이야기

SQL 공부하기3일차: JOIN-INNER, OUTER, CROSS, SELF

해피밀:D 2023. 7. 25. 20:22

SQL공부하기 3일차

 

1. INNER JOIN 공부하기

 

SELECT

A. CATEGORY --사용하는 일부 COL만 가져오기

A. ITEM

A. DATE

A.SECTOR

B.DATE

B.CLOSE

B.LOW

B. HIGH--사용하는 일부 COL만 가져오기 / JOIN하는 COL은 두번째 테이블에서 가져오지 않아야 함

FROM TABLE NAME AS A

INNER JOIN TABLE NAME  AS B ON A.CATEGORY = B. CATEGORY

 

WHERE A.CATEGORY = '---'

AND B.DATE >= '2022-00-00' AND B.DATE < '2022-00-00'

----------------------------------------------------------------------------------------------------------------------------------------------------------

SELECT

A. CAETORY

C.CAT

C.CAT

 FROM TABLE NAME AS A

INNER JOIN TABLE NAME_ AS B ON A.NUM = B. NUM

INNER JOIN TABLE NAME --- AS C ON B. CAT = B. CAT

WHERE A. CATEGORY = N'RETAIL'

ORDER BY C.NUM

 

2.OUTER JOIN 공부하기 

 

LEFT , RIGHT, FULL 어느쪽 테이블 기준으로 조인하는지 

 

SELECT 

A.NUM AS A_NUM

B. NUM AS B_NUM

FROM TABLE NAME AS A

LEFT OUTER JOIN TABLE NAME AS B ON A.NUM = B.NUM

 

SELECT 

A.NUM AS A_NUM

B. NUM AS B_NUM

FROM TABLE NAME AS A

RIGHT OUTER JOIN TABLE NAME AS B ON A.NUM = B.NUM

LEFT OUTER JOIN TABLE NAME AS C ON B.NAME = C. NAME 

WHERE A.NUM IS NULL

---LEFT & RIGHT 각각 다른 결과 도출

 

SELECT 

A.NUM AS A_NUM

B. NUM AS B_NUM

FROM TABLE NAME AS A

FULL OUTER JOIN TABLE NAME AS B ON A.NUM = B.NUM

WHERE A.NUM IS NULL OR B.NUM IS NULL

 

3. CROSS JOIN 공부하기 

 

SELECT 

  A.NUM

  B.NAME

FROM TABLE NAME AS A

CROSS JOIN TABLE NAME2 AS B

 

--각 데이터에 모든 조합의 수가 필요할 시 CROSS JOIN (EX: 123,ABC -> 1A 1B 1C 2A 2B 2C 3A 3B 3C)

 

4. SELF JOIN 공부하기 

 

SELECT 

 A.DATE AS A_DATE

A.[CLOSE] AS A_CLOSE

 B.DATE AS B_DATE

B.[CLOSE] AS B_CLOSE

B.[CLOSE]-A.[CLOSE] --CLOSE에서 빼준 것이 새로운 COL으로 생성됨

 

FROM TABLENAME AS A

LEFT OUTER JOIN TABLE NAME AS B ON A. DATEADD( DAY, -1, B.DATE) -- B에서 하루씩 뺀날짜 기준 으로 나옴

AND A.NAME = B. NAME

 

WHERE A. NAME = "---"

AND A.DATE >= '2022-00-00' AND A.DATE <'2022-00-00'

AND B.DATE >= '2022-00-00' AND B.DATE <'2022-00-00'

 

 

반응형