INNER JOIN (교집합)
문장암기할것
-결과물 총 28개
-멤버 : 25개
-노티스 : 45개
노티스가 멤버의 NICNAME을 참조하고있다.
SELECT *
FROM
MEMBER INNER JOIN NOTICE
ON MEMBER.NICNAME = NOTICE.WRITER_ID;
OUTER JOIN (합집합)
OUTER도 포함시키는 조인
OUTER(관련없는 것)
부모테이블의 아우터,
자식테이블의 아우터 각각 존재가능
A의 모든 열 더하기 B에 있는 공통부분
LEFT OUTER JOIN
멤버의 모든열 + 노티스에 있는 공통부분
SELECT *
FROM
MEMBER LEFT OUTER JOIN NOTICE
ON MEMBER.NICNAME = NOTICE.WRITER_ID;
RIGHT OUTER JOIN
NOTICE의 모든열 + 멤버에있는 공통부분
SELECT *
FROM
MEMBER RIGHT OUTER JOIN NOTICE
ON MEMBER.NICNAME = NOTICE.WRITER_ID;
FULL OUTER JOIN
A와 B의 합집합
JOIN은 중요하므로 익숙해져야한다.
필드이름의 충돌문제
두개의 테이블을 합칠경우 컬럼이름이 중복될 수있다.
SELECT N.ID, NAME
FROM
MEMBER M INNER JOIN NOTICE N
ON M.NICNAME = N.WRITER_ID;
INNER JOIN의 특징 :
모든회원이 조회되지않고, 글쓴회원만 조회된다.
SELECT M.NICNAME, M.NAME, COUNT(N.ID)
FROM
MEMBER M INNER JOIN NOTICE N ON M.NICNAME = N.WRITER_ID
GROUP BY M.ID, M.NICNAME ,M.NAME;
from에있는걸 먼저 집계한후 진행
3개 테이블 조인하기
SELECT N.ID, N.TITLE, N.WRITER_ID, M.NAME WRITER_NAME ,COUNT(C.ID) CMT_COUNT
FROM
NOTICE N
LEFT JOIN MEMBER M ON N.WRITER_ID = M.NICNAME
LEFT JOIN "COMMENT" C ON N.ID = C.NOTICE_ID
GROUP BY N.ID, N.TITLE,N.WRITER_ID, M.NAME;
자식과합치면 부모가 2,3개씩 늘어난다.(중복발생)
집계해야만 자식을 내 레코드에 껴넣을수있다.
페이징시 WHERE절 필요
'2021 Newlecture > Servlet & JSP' 카테고리의 다른 글
키의 종류 / 관계선/ 정규화 (0) | 2021.05.14 |
---|---|
데이터베이스 모델링 2 (0) | 2021.05.13 |
데이터베이스 모델링 (0) | 2021.05.12 |
VIEW/ SELF JOIN / 조인대신 서브쿼리사용 (0) | 2021.05.11 |
(JSP) 수정한내용 저장 / 등록페이지 / 삭제 (0) | 2021.05.07 |
(JSP) 상세페이지내 수정 / sendRedirect/ service.get(id)으로 기존데이터가져오기 (0) | 2021.05.06 |
(JSP) 페이지연결 , 상세내역 (0) | 2021.05.04 |
HAVING / FROM 안에 FROM / SQL 함수정리 (0) | 2021.04.30 |