728x90
반응형
SMALL
문제
현재난관에 봉착했다.
WRITER가 같은 조건에서
REGDATE 기준 최신값들을 5개만 출력되게
두 테이블을 병합해야한다.
두 개 사이의 공통 컬럼인 TITLE, CONTENT, WRITER, REGDATE, TYPE은 쉽게 UNION 을 써서 가져올수 있지만 GNO, BNO 컬럼값은 둘다 다르기에 어떻게 구현해야 할지 생각이 나지 않는다..
해결
본래는 위의 GNO 와 BNO 값을 가져와서 게시글 번호를 눌렀을때 해당 게시글로 가는 방법을 생각하고있었다.
그러나
두 테이블간의 중복되는 컬럼이 존재하기 때문에
테이블을 하나로 운영하기로 판단하였다.
본래는 게시판 생성 번호때문에 각 게시판마다 테이블을 생성해야줘야 한다고 생각했다.
허나 현재 상용되는 커뮤니티들을 봤을땐 하나로 운영되고 있었고 구지 게시판마다 테이블을 여러개 생성하였을시 자원의 낭비가 있을수 있겠구나 라고 생각할 수 있었다.
TYPE 컬럼으로 게시판의 종류를 나누게 판단하게 하였다.
기존 해결 이전의 mybatis sql
select rownum rn,b.*
from(
select *
from
(select
bno,type,regdate,writer,content,title
from board
union
select
gno,g_type,g_regdate,g_writer,g_content,g_title
from g_board)a
where writer='admin90' and rownum>0
order by regdate desc)b
where rownum<6;
해결 후의 mybatis sql
select
bno, title, content, regDate, type
from
(
select /* +INDEX_DESC(board pk_board) */
rownum rn, bno, title, content, regDate, type
from
board
where writer = 'admin90' order by regdate desc
)
where rownum < 6
728x90
반응형
LIST
'나의 주니어 개발 일기 > 오라클' 카테고리의 다른 글
rrrrr (0) | 2021.06.29 |
---|---|
[오라클] 외부에서 나의 오라클 DB 사용하기(로컬 서버pc 만들기) (0) | 2021.06.15 |
[오라클] on update cascade (0) | 2021.02.14 |
입출고관리 db참고 설계도 && 쇼핑몰 DB (0) | 2021.01.16 |
식별관계 (0) | 2021.01.15 |