사전 작업으로 아래 SQL 파일 DB에 적용
-- [서브쿼리]
-- 회원아이디가 '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이 아닌 경우, 그대로 출력.
'기타' 카테고리의 다른 글
06. Oracle - SQL Developer_ERD, 테이블 구성순서 (ex. 쇼핑몰) (0) | 2023.03.16 |
---|---|
05. Oracle - SQL Developer_조인(Join) (0) | 2023.03.16 |
03. Oracle - SQL Developer 기본쿼리문 (0) | 2023.03.16 |
02. Oracle - Django 연결 환경설정 (1) | 2023.03.16 |
01. SQL Developer(Oracle), HeidiSQL(MySQL) (0) | 2023.03.14 |