19일차
2024. 8. 16. 18:48ㆍFCB2O4
오늘은 메인페이지 위주로 진행
먼저 구장 목록 중에서 인기도가 높은 순서대로 3개를 뽑아 내림차순으로 정렬
<select id="getStadiumList" resultType="b2o4.dto.MainPage">
SELECT og.stadiumName, og.stadiumImage, rv.likeCount
FROM stadium og
JOIN stadiumreview rv ON og.stadiumNo = rv.stadiumNo
ORDER BY totalLike DESC
LIMIT 3
</select>
해당 코드로 진행하다가 DB를 보니 평가 테이블이 다음과 같이 작성되어 있었다.
이에 대대적으로 다시 수정.
스타디움 별로 좋아요와 싫어요를 각각 합산하고 좋아요 총합에서 싫어요 총합을 뺀 값을 totalLike로 지정하였다.
<select id="getStadiumList" resultType="b2o4.dto.MainPage">
SELECT og.stadiumName, og.stadiumImage, (SUM(rv.likeCount) - SUM(rv.dislikeCount)) as totalLike
FROM stadium og
JOIN stadiumreview rv ON og.stadiumNo = rv.stadiumNo
GROUP BY og.stadiumNo, og.stadiumName, og.stadiumImage
ORDER BY totalLike DESC
LIMIT 3
</select>
그리고 totalLike가 가장 높은 3개를 뽑아내어 페이지에 표시.
그리고 갤러리 게시판과 용품 장터에서 랜덤으로 3개를 가져와 페이지에 보이도록 하였다.
<!-- 갤러리 게시판에서 게시물 3개 랜덤으로 가져오기 -->
<select id="getGalleryList" resultType="b2o4.dto.MainPage">
SELECT * FROM galleryboard ORDER BY RAND() LIMIT 3
</select>
<!-- 용품 장터에서 용품 3개 랜덤으로 가져오기 -->
<select id="getGoodsList" resultType="b2o4.dto.MainPage">
SELECT * FROM goodsshop ORDER BY RAND() LIMIT 3
</select>
여기서 RAND()는 MySql에서만 쓸 수 있는 명령어로, 랜덤으로 가져올 수 있게 해준다.
일단 메인페이지 틀을 잡는 데 까지는 진행하였다. 다음에 본격적으로 CSS를 진행할 예정
또한 날씨 API를 가져와 오른편에 날씨를 띄울 예정