21.03.24 lamplight서비스 프로젝트(starRating테이블명 -> rating으로 변경, 평점 추가, 출력 구현, 리뷰 삭제 기능 구현)

2021. 3. 24. 22:18JAVA/Spring & Vue APP 프로젝트(백엔드)

<멤버별 평점 0.5단위로 값 가져오는 쿼리>

# 평점 포인트 포함해서 지도사 리스팅
SELECT M.*,
IF(
(ROUND(AVG(R.point),1)-(ROUND(AVG(R.point),1)-0.5)) >= 0.5,
 ROUND(AVG(R.point)),
 ROUND(AVG(R.point))-0.5
) AS extra__retingPoint
FROM `member` AS M
LEFT JOIN rating AS R
ON R.relTypeCode = 'director'
AND M.id = R.relId
WHERE M.authLevel = 5
GROUP BY M.id
ORDER BY M.id DESC

<평점 테이블 추가>

# 평점 테이블 추가
CREATE TABLE rating (
  id INT(10) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
  regDate DATETIME NOT NULL,
  updateDate DATETIME NOT NULL,
  `relTypeCode` CHAR(20) NOT NULL,
  relId INT(10) UNSIGNED NOT NULL,
  memberId INT(10) UNSIGNED NOT NULL,
  `point` FLOAT(10)  # 좋아요 시 +1, 싫어요 시 -1 등 가능
);

# 고속 검색을 위해서 인덱스 걸기
ALTER TABLE rating ADD KEY (relTypeCode, relId); 
# SELECT * FROM reply WHERE relTypeCode = 'article' AND relId = 5; # O
# SELECT * FROM reply WHERE relTypeCode = 'article'; # O
# SELECT * FROM reply WHERE relId = 5 AND relTypeCode = 'article'; # X