프로젝트/G.O.A.T(여행 스케줄러)

좋아요 높은순으로 띄우기

찌서니 2022. 2. 21. 20:58

학원끝나고서는 신경못쓰다가 오랜만에 들어와봤더니

방문자가 100명이 넘은거 보고 기뻐서, 이번 목표는 천명으로 해보자!!!

(많은 도움이 됐으면 좋겠다ㅜ)

프로젝트 마지막에는 시간이 너무 촉박한데 할게 많아서,,,

블로그를 틈틈히 한줄 알았는데ㅜ 많이 안했구나ㅎ

다 쓸수 있을지 모르겠지만 해보자!

 

🔔 22월 01월 19일
✔ 좋아요 높은순으로 3개 보여주기

아직 오류를 찾기 전이어서 게시판 기능에서는

좋아요 숫자를 카운트해서 높은순으로 띄우는게 필요했음

 

 

좋아요수를 받은 게시물이 한개도 없으면

 

좋아요수 받은 게시물이 1개만 있을 경우

 

ㅐㅐ
좋아요수 받은 게시물이 3개 이상일 때

 

<h4>좋아요 HOT 게시물<small>&nbsp;(*공감수 많은순)</small></h4>
		<div>
			<c:if test="${empty hotLike }">
				<i>공감수 집계중입니다.</i>
			</c:if>
			<c:if test="${not empty hotLike }">
				<div class="hotLikeContainer">
				<c:forEach var="hl" items="${hotLike }">
				<c:set var="i" value="${i+1}"></c:set>
					<div class="hotTrip">
						<img style="width: 140px; height: 140px;"
							onclick="location.href='tripView.do?t_num=${hl.t_num }&pageNum=${pb.currentPage }'" src="/goat/resources/tripPhoto/${i}.png">
						<div style="font-size: 15px;">제목 :  ${hl.t_title }</div>
						<div style="font-size: 15px;">작성자 : ${hl.m_name }</div>
					</div>
				</c:forEach>
				</div>
			</c:if>
		</div>

hotLike는 컨트롤러에서 가져온거임

 

TripController.java

List<Trip> hotLike = ts.hotLike(trip);
model.addAttribute("hotLike", hotLike);

 

Trip.xml

<select id="hotLike" parameterType="trip" resultType="trip">
   select b.*, t.*, m.m_name from  
     (select a.*, rowNum rn from  
       (select tl.t_num, count(*) cnt from 
         trip_like tl, trip tr where tl.t_num=tr.t_num and tr.del !='y' group by tl.t_num order by cnt desc)a)b,
           trip t, member m where b.t_num=t.t_num and m.m_num=t.m_num and rn between 1 and 3 order by rn
</select>

오라클 순서로 출력시키는거는 틀이 있어도 너무 어렵다ㅜㅜ

1) tl.t_num(여행이야기 글번호)를 그룹지어서 count 좋아요수를 높은 순으로 출력하는데,

trip_like의 t_num과 trip의 t_num이 같고 tr.del(여행이야기 삭제여부)가 삭제되지 않은거 중에서 그 과정을 a라고 하고

2) 그것을 rowNum 일련번호를 매겨서 b라고 하고

3) b의 모든 컬럼, trip의 모든 컬럼, member의 m_name 컬럼만 출력하는데, rn이 1부터 3까지만