728x90
반응형
🐧 사용된 데이터 ERD
🐧 SubQuery (서브쿼리)
📍 단일 컬럼에 단일 행 1
- 비교연산자를 이용하는 서브쿼리 특징
- 하나의 컬럼에 하나의 값만 조회가능해야 함
- 단일 컬럼에 단일 행이라고 표현
- 예시
- 아이디 a001인 회원이 가지고 있는 마일리지보다 큰(이상) 회원들 조회
- 조회 컬럼 : 회원아이디, 회원 마일리지
SELECT mem_id, mem_mileage
FROM member
WHERE mem_mileage >= (SELECT mem_mileage FROM member WHERE mem_id = 'a001');
📍 단일 컬럼의 단일 행 2
- SELECT 뒤에 조회할 컬럼명 대신해서 서브쿼리 특징
- 하나의 컬럼에 하나의 값만 조회가능
- 단일 컬럼에 단일 행
- 예시
- 주문번호, 주문자 아이디, 주문자이름, 주문상품코드, 주문수량 조회
SELECT cart_no, cart_member, (SELECT mem_name FROM member WHERE mem_id = cart_member) AS mem_name, cart_prod, cart_qty
FROM cart;
📍 단일 컬럼에 다중 행
- IN 함수를 이용해서 서브쿼리를 사용할 경우 규칙
- 하나의 컬럼을 여러개의 값을 조회 할 수 있음
- 단일 컬럼에 다중 행이라고 칭함
- 예시
- 한번도 주문한적이 없는 회원을 조회하기
- 조회 컬럼 : 회원아이디, 회원이름
SubQuery 문제
문제 1
- 상품 정보에 존재하지 않는 상품분류정보를 조회
- 조회컬럼 : 상품분류코드, 상품분류명
SELECT lprod_gu, lprod_nm
FROM lprod
WHERE lprod_gu NOT IN (SELECT prod_lgu FROM prod);
문제 2
- 주문번호, 주문상품코드, 주문 수량, 주문상품명, 상품분류명 조회하기
- 단, 회원의 거주지역이 서울 또는 대전인 경우
- 정렬은 주문번호를 기준으로 오름차순, 주문수량을 기준으로 내림차순
select cart_no, cart_prod, cart_qty,
(SELECT prod_name
FROM prod
WHERE prod_id = cart_prod) AS prod_name,
(SELECT lprod_nm
FROM lprod
WHERE lprod_gu = SUBSTRING(cart_prod, 1, 4)) AS lprod_nm
FROM cart
WHERE cart_member IN (SELECT mem_id FROM member WHERE SUBSTRING(mem_add1, 1, 2) IN('서울','대전'))
ORDER BY cart_no, cart_qty desc;
문제 3
- 조회 컬럼 : 상품코드, 상품명, 상품판매가격, 거래처명
- 조건 : 회원의 마일리지 값 100이상, 주문수량 5이상, 상품분류명에 컴퓨터 포함
- 거래처 주소지 지역이 서울 또는 대전 또는 광주 인 경우
SELECT prod_id, prod_name, prod_sale, (SELECT buyer_name FROM buyer WHERE prod_buyer = buyer_id) AS buyer_name
FROM prod
WHERE prod_id IN (SELECT cart_prod FROM cart
WHERE cart_member in (SELECT mem_id FROM member where mem_mileage >= 100))
AND prod_id IN (SELECT cart_prod from cart
where cart_qty >=5)
AND prod_lgu IN (SELECT lprod_gu FROM lprod
where lprod_nm LIKE '%컴퓨터%')
AND prod_buyer IN (
SELECT buyer_id from buyer
where SUBSTRING(buyer_add1,1,2) IN('서울','대전','광주'));
728x90
반응형
'Digital Boot > Database' 카테고리의 다른 글
[Database][SQL] 집계 함수 / 그룹 함수 (0) | 2023.11.22 |
---|---|
[Database][SQL] 함수(replace, round, cast) / 조건문 / NULL (2) | 2023.11.22 |
[Database][SQL] 별칭 / 연산자 / 함수 (0) | 2023.11.21 |
[Database] MariaDB / HeidiSQL 설치 및 사용 (5) | 2023.11.20 |
[Database] DB개요 / 파일시스템과 DBMS / 클라이언트와 서버 (2) | 2023.11.20 |