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