어? 이게 되네
2022.05.25. 수요일 이공계 전문기술 연수사업 (MVC를 활용한 페이징처리 된 게시판 구현) 본문
오늘 배운 것
<c:forEach var="i" begin="1" end="${totalPage }"></c:forEach>
rownum활용하여 sql문 작성 (start부터 end까지 출력되도록)
정렬(order by no)하면서 행번호(rownum)를 붙일 수 없다 !!!
서브쿼리를 써야 함 !!!!!!!!!!!!!!
정렬한 다음 행번호를 붙임
정렬한 결과를 서브쿼리로 놓고 행 번호를 붙임
select * from (select rownum n,no,title,writer,pwd,content,regdate,hit,fname from board order by no) where n>=11 and n<=20;
select n,title from (select rownum n,title from (select title from board order by title)) where n between 5 and 9;
정렬해서 행번호를 붙여서 일부분을 검색해야 함
select no,title,writer,pwd,content,regdate,hit,fname from(select rownum n,no,title,writer,pwd,content,regdate,hit,fname title from(select * from board order by no)) where n between 5 and 9;
답변형 게시판
db에 다음과 같은 컬럼 추가
- b_ref(서로 관련있는 글인지 나타내기 위해서 사용함),
- b_step(답글과 부모글들을 어떤 식으로 나타내야할 지 나타내기 위해서 사용)
- b_level(답글의 깊이를 나타내기 위해 사용 - 답글의 답글이 있을 수도 있음!)
SQL> alter table board add b_ref number;
테이블이 변경되었습니다.
SQL> alter table board add b_step number;
테이블이 변경되었습니다.
SQL> alter table board add b_level number;
테이블이 변경되었습니다.
글번호 글제목 답글번호
no title b_ref b_step b_level
1 a 1 0 0
2 b 2 0 0
3 c 3 //새글 일 시에는 자기 글번호와 동일함 0 //부모글은 다 0 0 //부모 글은 다 0
4 b 2 //답글일 시에는 답글한 부모글의 글번호가 나옴 4 1
5 b1 2 2 //서로 관련있는 글 중에서 글을 출력하는 순서를 위해 사용 1
6 aa 2 1 //이미 달려있는 답글들의 b_step을 1씩 증가시키고 나는 부 모글의 b_step+1로 설정 1
7 ff 2 3 2 //답글일 시엔 부모글에 b_level+1
updateStep(b_ref,b_step);
오늘 헷갈린 것
- rownum과 order by는 함께 할 수 없다!(서브쿼리를 써야 함)
오늘 한 생각
생각보다 sql은 어렵다.. 만만히 볼 것이 아니다..
우리가 무심코 사용하는 웹페이지에는 수많은 개발자들의 피땀눈물이 섞여있는 거구나...
페이징 처리 하나 조차도 쉽지가 않다
'TIL' 카테고리의 다른 글
2022.05.30. 월요일 이공계 전문기술 연수사업 (Spring Boot) (0) | 2022.05.30 |
---|---|
2022.05.26. 목요일 이공계 전문기술 연수사업 (Spring, Spring MVC) (0) | 2022.05.30 |
2022.05.24. 화요일 이공계 전문기술 연수사업 (서블릿,MVC,JSP) (0) | 2022.05.30 |
2022.05.23. 월요일 이공계 전문기술 연수사업 (MVC패턴 이용 게시글 CRU) (0) | 2022.05.23 |
2022.05.20. 금요일 이공계 전문기술 연수사업 (MVC) (0) | 2022.05.20 |