쿼리문 질문입니다

쿼리문 질문입니다

QA

쿼리문 질문입니다

본문

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
             )

원하는게 이런건가요?

제가 원하는건요
신고 게시판을 만들었는데.

신고 카운팅을 하는거예요ㅎ

그래서 wr_15필드에 신고가 될때마다 같은 게시물이 있으면 +1 을 시켜서
총 몇번 신고됐는지 넣어주는 쿼리를 짜려고 했습니다.ㅎ
그래서..order by limit 1로 가장 마지막껄 가져오려고 한거구요 ㅎ

결국엔


// 기존 신고 게시물의 wr_15(신고횟수) 수를 가져옴
				$sql_last = "SELECT wr_15 FROM g5_write_report WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}'";
				$row_last = sql_fetch($sql_last);

				$sql_cnt = "UPDATE g5_write_report SET wr_15 = '{$row_last['wr_15']}' + 1 WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}' AND wr_13 = '{$member['mb_id']}'";

				sql_query($sql_cnt);


이렇게 해서 하긴 했는데..
주신 소스로도 한번 해보겠습니다 ㅎ

기왕이면 쿼리 한줄이 낫죠 ㅎㅎ
감사합니다 :D

왜 이렇게 쓰신건지는 모르겠는데요 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번 쿼리를 돌리는 것도 나쁘지않습니다.

넵 알아보기 힘들어서
select 후 넣어 주었습니다 ㅎ
신고 게시판이 좀 복잡한게..

게시물 신고가 되면
g5_write_report 테이블에
신고 게시물의 row 가 몽땅 들어오거든요
wr_id 값만 제외하고 몽땅 들어와서
같은 wr_parent 인데 bo_table 이 다른 경우도 있어서요.

무튼 말씀 감사드립니다!

답변을 작성하시기 전에 로그인 해주세요.
전체 123,590 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT