쿼리문 질문입니다
본문
update문에
order by 필드 limit1 을 넣어야 하는데..
구글링 해보니
SET 다음에 select 문을 써주면 된다고 해서
해주었습니다만..
"UPDATE g5_write_report SET
(
SELECT wr_id FROM g5_write_report WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}' ORDER BY wr_18 DESC LIMIT 1
) wr_15 = wr_15 + 1";
mysql 문법 에러가 납니다;;
!-->
답변 3
update g5_write_report set wr_15 = wr_15+1
where wr_id = (
select wr_id
from g5_write_report
where wr_is_comment=0 and wr_parent = '{$row['wr_parent']}'
AND wr_20 = '{$board['bosubject']}'
ORDER BY wr_18 DESC LIMIT 1
)
원하는게 이런건가요?
!-->왜 이렇게 쓰신건지는 모르겠는데요 select 문은 where 문에서 처리해 주는 방식은 알겠지만 update 문에서 왜 이렇게 사용하시는건지 잘 모르겠네요
신고가 되면 해당 글의 wr_15 여분필드에 들어있는 값에 +1해서 update하면 끝아닌가요?
그누보드의 게시글 작성시 게시판 글수를 카운팅 하기위해서 게시판의 bo_count_write 필드에 숫자가 +1씩 쌓입니다.
bbs/write_update.php
// 게시글 1 증가
sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
위와 같은 형식으로 하면 신고된 글에 +1 씩 넣으시면 되지싶네요
참고로 지금 update문에 서브쿼리로 selete 하는 방식은 아주 잘못된 방식입니다.
그렇게 사용하실 거면 차라리 update 이전에 selete를 하시고
그 값을 가지고 update문에 사용하세요 그런식의 쿼리를 구성하시면 직관적이지 않기 때문에
나중에 수정할 때 어려움을 겪습니다.
기왕이면 쿼리 한줄이 좋은게 아닙니다. 남이 보았을때 직관적으로 소스가 일관성이 있어야합니다.
한번에 처리가 안되면 2번 쿼리를 돌리는 것도 나쁘지않습니다.
!-->
답변을 작성하시기 전에 로그인 해주세요.