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;

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e1e1dc22-4007-4e63-b328-c7cf0b1e0bfc/Untitled.png

내부조인 예)

--상품테이블에서 상품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;

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d1b2d56b-cb74-4d85-a7b4-9dd42edaff09/Untitled.png

내부조인예)

--상품테이블(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);

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/100bb346-c502-4f66-ac66-4c31f38cffd9/Untitled.png

내부조인예)

--장바구니테이블(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);

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/849be2a9-a763-416b-add3-ceeaa412b487/Untitled.png

내부조인예)

--장바구니테이블(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);

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b36b4edf-29d5-4942-938c-13dcab12bb11/Untitled.png