본문 바로가기
웹 프로그래밍 기초/자바기반의 웹&앱 응용SW 개발자

자바기반의 웹&앱 응용 SW개발자 양성과정 46일차 -68

by oncerun 2020. 5. 1.
반응형

getNoticeList 메서드의 SQL 쿼리문 작성하기.

 

 

--getNoticeList

 

서브 쿼리 이용하기

 

SELECT * FROM(

SELCT ROWNUM NUM, N.*

FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N

)

WHERE NUM BETWEEN 1 AND 5; 

 

ROW_NUMBER() 함수 이용

 

SELECT * FROM

(

SELECT ROW_ NUMBER() OVER (ORBER BY REGDAGE DESC) NUM,

NOTICE.* FROM NOTICE

)

WHERE NUM BETWEEN 6 AND 10;

 

public List<Notice> getNoticeList(String field, String query, int page) {
		
		String sql = "SELECT * FROM(" + 
				"   SELCT ROWNUM NUM, N.* " + 
				"   FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N" + 
				")" + 
				"WHERE NUM BETWEEN 1 AND 5 ";
		
		return null;
	}

코드를 작성할 때 띄어쓰기 주의 *

 

 

NEXT, PREV 

 

다음이나 이전에 해당되는 글 구하기.

 

게시글은 삭제될 수 있기 때문에 -1을 하는 것만으로 해결할 수 없다.

 

 

다음 글 구하기

 

1. 먼저 해당 ID보다 REGDATE가 큰 ID의 레코드를 가져온다.

 

SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHRE ID =3)

 

2 가져온 다음 오름차순으로 자동 정렬되기 때문에 첫 번째 레코드를 가져온다.

 

ROWNUM =1

 

3. 해당되는 ID의 NOTICE 전부를 가지고 온다.

 

SELECT * FROM NOTICE

WHERE ID = (SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHERE ID=?)

AND ROWNUM = 1

);

 

이전 글 구하기.

 

1. 해당 ID보다 REGDATE 가 낮은 ID를 가져온다.

 

SELECT ID FROM NOTICE WHERE REGDATE < (SELECT REGDATE FROM NOTICE  WHERE ID=? )

 

2. 이전 글은 내림차순으로 정렬을 해 첫 번째 글을 가져와야 한다.

 

SELECT ID FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC)

WHERE REGDATE < (SELECT REGDATE FROM NOTICE  WHERE ID=?)

AND ROWNUM =1

 

전체 서비스 코드

 

public Notice getNextNotice(int id) {
String sql = "SELECT * FROM NOTICE "
+ " WHERE ID = (SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHERE ID=3)"
+ "AND ROWNUM = 1 " + ")";

return null;
}

public Notice getPrevNotice(int id) {

String sql = "SELECT ID FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC)"
+ " WHERE REGDATE < (SELECT REGDATE FROM NOTICE  WHERE ID=?)" + "AND ROWNUM =1";
return null;
}

 

반응형

댓글