본문 바로가기
개발자/비트캠프

프로젝트 코드 변경 사항 및 메모 #8

by mingutistory 2020. 5. 14.
728x90

8. 조회수 뻘짓 

 

ORA-00937: 단일 그룹의 그룹 함수가 아닙니다
00937. 00000 -  "not a single-group group function"

> 그룹함수 : 그룹 당 하나의 결과를 반환하는 함수. 

count(*) : null 값 포함, count(column) : null 값 제외

 

select distinct(q.qna_num), (select count(*) from qna_reply where qna_num = q.qna_num) 
from qna q, qna_reply qr order by qna_num

 

조금 쉽게 생각하려고 계속 했더니 답이 살짝 보였다. 이걸 qnaVO에 컬럼을 저장 할지 아니면 다른 리스트로 만들어서 출력 할지 고민해봐야 되겠음. 어차피 list로 뱉을 때 hashmap으로 하고 있기 때문에 왠만하면 게시판 리스트 출력 할 때 같이 출력하고 싶다. 

 

좀 오래 걸렸는데 살짝 짜릿하다. 

게시판 리스트를 불러오는 sql문을 변경했다.

	<select id="getQnaList" parameterType="java.util.HashMap" resultMap="hashmapVO">
		select * from (select rownum as rnum, s.* from (
		select q.*, m.member_name FROM (select distinct(q.qna_num), q.member_id, q.qna_type,  q.order_num, q.qna_title, q.qna_content, q.qna_date,
		q.qna_file, q.qna_check, q.qna_scr, q.qna_pass, (select count(*) from qna_reply where qna_num = q.qna_num) as reply_cnt 
		from qna q, qna_reply qr order by qna_num) q, member m where q.member_id = m.member_id ORDER BY qna_num desc) s)
		where rnum between ${startrow} and ${endrow}
	</select>

 

처음에 계속 reply_cnt가 null이 떠서 뭐지 했는데 당연히 hashmapVO로 받고 있었으니까 위에 컬럼명 추가했어야 했는데 추가하지 않고 계속 호출하고 있었다. 어리석음. 

 

이제는 예외처리 몇개만 하고 그만 해야되겠음. 

 

💡 예외처리 설정

당연한 것들이지만 예외 처리 못해둔 것들을 더 완성도 있게 수정한다. 

 

1) 공개 설정하고 등록 했을 때 비밀번호 입력하지 않아도 됨 

}else if(document.getElementById('qna_pass').value==""){
    	var qna_src = $(":input:radio[name=qna_scr]:checked").val();
    	if(qna_src == '비공개') {
    		Swal.fire("","작성하신 글의 비밀번호를 설정해 주세요 (숫자 최대 4자)","info");
            document.getElementById('qna_pass').focus();
            return false;	
    	}
    }

2) 답글이 등록 되어 있으면 원글 수정 및 삭제 불가  👍

3) 글쓴이 아니면 삭제 불가 > 수정은 처리 해둠 👍

 

📌 To Do List

[x] 리스트, 페이징
[x] 글 작성, DB 저장
[x] 글 상세보기
[x] 글 수정, 삭제
[x] 비공개, 공개 설정
[x] 댓글, 대댓글
[x] 예외처리 설정

 

게시판은 이 정도로 완성 

 

💡 관리자 페이지 메인 코드 정리 및 보완

 

지금 상태. 

우선 큰 문제

1. 왼쪽 메뉴

2. 오늘의 일정 (fullCalender.js)

3. 차트 로딩 문제

4. 진입 

 

⭐ 왼쪽 메뉴

이게 pc 화면에서는 괜찮았는데 말이죠(구구절절)

내가 짠 코드가 아니라서 왜 그런지 모르겠는데 아마 height가 100%으로 되어있고 메뉴가 고정적으로 되어있나보다. 스크롤을 내리면 같이 내려가거나 해야 될 것 같은데 고정되어 있어가고 하단이 나오지 않음. 

 

⭐ 오늘의 일정

발표 전 날에 진짜 fullCalender 사용 법 한번 읽어보고 데이터 그냥 때려 넣어놨음. 추가, 삭제 버튼을 넣어두면 좋을 것 같음. 

 

⭐ 차트 로딩 문제

우선 지금 데이터가 제대로 되지 않아서 차트가 안나오는 문제 + 차트가 메인에 3개가 있어서 로딩이 길어지는 문제. 

애초에 차트가 이렇게 많이 필요한가?라는 본질 적안 생각 + 메뉴가 따로 빼져 있는데 코드를 2번 쓸 필요가 있나? 라는 생각

 

일단 이렇게 크게 3개로 나눠서 작업 진행 하도록 하겠다.

 

 

💡 왼쪽 메뉴

(왼) 전체 화면

(오) 차트 눌렀을 때 화면

 

노트북 화면으로 봤을 때 이제 딱 이렇게 보인다. 확실히 이렇게 메뉴를 모으니까 보기 좋아 보인다. 스크롤 내리면 왼쪽 메뉴는 고정되어 있는 채로 움직임. 

300x250

댓글