본문 바로가기

기타

04. Oracle - SQL Developer 서브쿼리, 조인

사전 작업으로 아래 SQL 파일 DB에 적용

oracle_base_table.sql
0.09MB

-- [서브쿼리]

-- 회원아이디가 'B001'인 회원의

-- 마일리지값보다 큰(이상) 회원정보 조회

-- 조회컬럼 : 아이디, 이름, 마일리지

-- 이름을 기준으로 오름차순

 

SELECT MEM_ID, MEM_NAME, MEM_MILEAGE

FROM MEMBER

WHERE MEM_MILEAGE >=

        (SELECT MEM_MILEAGE

        FROM MEMBER

        WHERE MEM_ID='B001')

        ORDER BY MEM_NAME ASC;

 

-- 한번도 장바구니에 담지 않은 회원의 정보조회

-- (한번도 주문한 적이 없는 회원과 동일)

-- 조회컬럼 : 회원아이디, 회원이름

-- 정렬은 이름기준으로 오름차순

 

SELECT MEM_ID, MEM_NAME

FROM MEMBER

WHERE MEM_ID NOT IN

        (SELECT CART_MEMBER FROM CART);

 

-- 상품정보 조회하기

-- 조회컬럼 : 상품코드, 상품명, 상품분류명 조회

-- 단, 조인(JOIN) 사용하지 않기, 서브쿼리는 가능

 

SELECT PROD_ID, PROD_NAME, (SELECT LPROD_NM FROM LPROD WHERE LPROD_GU) AS L-NM

FROM PROD;

-- 조인 활용시

SELECT PROD_ID, PROD_NAME, LPROD_NM

FROM PROD, LPROD

WHERE LPROD_GU = PROD_LGU;

 

-- EXISTS 활용

SELECT *

FROM MEMBER

WHERE EXISTS(SELECT * FROM CART WHERE CART_MEMBER = MEM_ID);

-- CART_MEMBER 컬럼 데이터와 MEM_ID 컬럼 데이터가 같은 데이터를

-- 뽑아서 해당 데이터가 MEMBER 에 존재할 경우 이를 보여준다.

 

-- (중요)

-- 회원 아이디가 'B001'인 회원의

-- 마일리지값보다 큰(이상) 회원정보를 이용해서

-- 위 조건을 만족하는 회원들의 장바구니 정보 확인하기

-- 조회 컬럼 장바구니 전체

 

-- 방식 1)

SELECT *

FROM CART

WHERE CART_MEMBER IN

        (SELECT MEM_ID

        FROM MEMBER

        WHERE MEM_MILEAGE >=

                (SELECT MEM_MILEAGE

                FROM MEMBER

                WHERE MEM_ID='B001'));

 

-- 방식 2)

SELECT *

FROM CART,

        (SELECT MEM_ID, MEM_NAME, MEM_MILEAGE

        FROM MEMBER

        WHERE MEM_MILEAGE >=

                        (SELECT MEM_MILEAGE

                        FROM MEMBER

                        WHERE MEM_ID='B001')

        ORDER BY MEM_NAME ASC)

        A

WHERE CART_MEMBER = A.MEM_ID;

 

 

-- 회원들이 주문한 전체 수량을 확인하려고 합니다.

-- 회원 전체에 대해서 수량 확인하기, 주문내역이 없으면 0으로

-- 조회컬럼 : 회원아이디, 회원이름, 주문수량의 합

 

SELECT MEM_ID, MEM_NAME,

                NVL(SUM(CART_QTY), 0) AS SUMQTY

FROM MEMBER LEFT OUTER JOIN CART

                ON(MEM_ID = CART_MEMBER)

GROUP BY MEM_ID, MEM_NAME;

--NVL 해석=> SUM(CART_QTY) 컬럼의 NULL 값을 0으로 치환해준다.

                        NULL이 아닌 경우, 그대로 출력.