쿼리문 하나 검토좀 부탁 드립니다
본문
추천수를 합계 내서 포인트 주려고 하는데요
맴버의 최근 5개만 합계 내려면
$sumSql = "select sum(wr_good) as point from $write_table where wr_is_comment = 0 and mb_id ='{$member[mb_id]}' limit 5";
$sumPoint = sql_fetch($sumSql);
$plusPoint = $sumPoint[point] ;
$sumPoint = sql_fetch($sumSql);
$plusPoint = $sumPoint[point] ;
이렇게 하면 맞나요?
그런데 이렇게 하면 맴버의 5개만이 아니고 모든 합계를 내는것 같아요
최근 5개만 합계 내려면 for 문으로 돌려야 하나요?
답변 2
limit 은 앞쪽 쿼리의 결과의 일부를 보여주는 역할을 합니다.
sum은 where 조건과 group by 등으로 합의 대상으로 정할 수 있지만,
limit 으로 제한된 결과의 합을 구하는 것은 아닙니다.
이렇게 하면 될것 같네요. ^^
$sumSql = "SELECT SUM(wr_good) AS point FROM (SELECT wr_good FROM $write_table WHERE wr_is_comment = 0 AND mb_id ='{$member[mb_id]}' ORDER BY wr_id DESC LIMIT 5) AS subquery";
order by wr_id desc
최신글 기준으로 정렬을 추가 해주셔야 최근 5개만 합계를 구할 수 있겠죠
아래처럼 수정해보세요
$sumSql = "select sum(wr_good) as point from $write_table where wr_is_comment = 0 and mb_id ='{$member[mb_id]}' order by wr_id desc limit 5";
답변을 작성하시기 전에 로그인 해주세요.