JOIN - 내부JOIN = INNER JOIN.pdf
기본키/외래키를 연결고리로 하여 조인
오라클 명칭 : 내부조인
ANSI 표준 협회 명칭 : INNER JOIN
내부조인 예)
--상품테이블(PROD)에서 상품코드(PROD_ID), 상품명(PROD_NAME)
--분류테이블에서 분류명(LPROD_NM)을 조회.
--상품테이블 : PROD
--분류테이블 : LPROD
--EQUI JOIN : 기본키와 외래키가 같은것만 출력
SELECT PROD.PROD_ID 상품코드,
PROD.PROD_NAME 상품명,
LPROD.LPROD_NM 분류명,
LPROD.LPROD_GU 기본키,
PROD.PROD_LGU 외래키
FROM PROD, LPROD
WHERE PROD.PROD_LGU = LPROD.LPROD_GU;
내부조인 예)
--상품테이블에서 상품ID(PROD_ID), 상품명(PROD_NAME)
--거래처테이블에서 거래처명(BUYER_NAME)
--카티션 프로덕트 : BUYER - 13행, PROD - 74행 => 962행(CARTESSIAN PRODUCT)
--카티션프로덕트의 해결방법은 EQUI JOIN.
--EQUI JOIN(내부조인) : 74행
SELECT * FROM BUYER;
SELECT * FROM PROD;
SELECT PROD.PROD_ID 상품ID,
PROD.PROD_NAME 상품명,
BUYER.BUYER_NAME 거래처명,
PROD.PROD_BUYER 외래키,
BUYER.BUYER_ID 기본키
FROM BUYER,PROD
WHERE PROD.PROD_BUYER = BUYER.BUYER_ID;
--컬럼 ALIAS 반영 : 테이블명이 긴 경우 아래와 같이 표현하면 좋음.
SELECT B.PROD_ID 상품ID,
B.PROD_NAME 상품명,
A.BUYER_NAME 거래처명,
B.PROD_BUYER 외래키,
A.BUYER_ID 기본키
FROM BUYER A,PROD B
WHERE B.PROD_BUYER = A.BUYER_ID;
내부조인예)
--상품테이블(PROD) 에서 상품ID(PROD_ID), 상품명(PROD_NAME)
--입고테이블(BUYPROD) 에서 입고일(BUY_DATE), 입고수량(BUY_QTY), 입고가격(BUY_COST)
--SQL DEVELOPER 툴 팁 : 자식테이블의 편집 - 제약조건 - 외래키 클릭 시 로컬열/참조열 확인 가능
SELECT PROD.PROD_ID 상품ID,
PROD.PROD_NAME 상품명,
BUYPROD.BUY_DATE 입고일,
BUYPROD.BUY_QTY 입고수량,
BUYPROD.BUY_COST 입고가격
FROM PROD, BUYPROD
WHERE PROD.PROD_ID = BUYPROD.BUY_PROD;
--ALIAS 반영
SELECT A.PROD_ID 상품ID,
A.PROD_NAME 상품명,
B.BUY_DATE 입고일,
B.BUY_QTY 입고수량,
B.BUY_COST 입고가격
FROM PROD A, BUYPROD B
WHERE A.PROD_ID = B.BUY_PROD;
-- ANSI 표준으로 변경
SELECT A.PROD_ID 상품ID,
A.PROD_NAME 상품명,
B.BUY_DATE 입고일,
B.BUY_QTY 입고수량,
B.BUY_COST 입고가격
FROM PROD A INNER JOIN BUYPROD B
ON(A.PROD_ID = B.BUY_PROD);
내부조인예)
--장바구니테이블(CART)에서 장바구니번호(CART_NO), 상품코드(CART_PROD), 구입개수(CART_QTY)
--멤버테이블(MEMBER)에서 회원ID(MEM_ID), 회원명(MEM_NAME)
SELECT CART.CART_NO 장바구니번호,
CART.CART_PROD 상품코드,
CART.CART_QTY 구입개수,
MEMBER.MEM_ID 회원ID,
MEMBER.MEM_NAME 회원명
FROM CART, MEMBER
WHERE CART_MEMBER = MEM_ID;
--ALIAS 반영
SELECT A.CART_NO 장바구니번호,
A.CART_PROD 상품코드,
A.CART_QTY 구입개수,
B.MEM_ID 회원ID,
B.MEM_NAME 회원명
FROM CART A, MEMBER B
WHERE A.CART_MEMBER = B.MEM_ID;
--ANSI표준(INNER JOIN)
SELECT A.CART_NO 장바구니번호,
A.CART_PROD 상품코드,
A.CART_QTY 구입개수,
B.MEM_ID 회원ID,
B.MEM_NAME 회원명
FROM CART A INNER JOIN MEMBER B
ON(A.CART_MEMBER = B.MEM_ID);
내부조인예)
--장바구니테이블(CART)에서 장바구니번호(CART_NO), 상품코드(CART_PROD), 구입개수(CART_QTY)
--회원테이블(MEMBER)에서 회원ID(MEM_ID), 회원명(MEM_NAME)
--상품테이블(PROD)에서 상품명(PROD_NAME)
--조인 팁!
--1. 기본키 외래키 연결고리찾기(PROD)(JOIN CART,MEMBER)
--2. PROD PROD_ID, CART PROD_ID 추가
SELECT A.CART_NO 장바구니번호,
A.CART_PROD 상품코드,
A.CART_QTY 구입개수,
B.MEM_ID 회원ID,
B.MEM_NAME 회원명,
C.PROD_NAME 상품명
FROM CART A, MEMBER B, PROD C
WHERE A.CART_MEMBER = B.MEM_ID
AND A.CART_PROD = C.PROD_ID;
--ANSI표준
SELECT A.CART_NO 장바구니번호,
A.CART_PROD 상품코드,
A.CART_QTY 구입개수,
B.MEM_ID 회원ID,
B.MEM_NAME 회원명,
C.PROD_NAME 상품명
FROM CART A INNER JOIN MEMBER B ON(A.CART_MEMBER = B.MEM_ID)
INNER JOIN PROD C ON(A.CART_PROD = C.PROD_ID);