특정조건의 포인트내역 삭제방법 문의

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
특정조건의 포인트내역 삭제방법 문의

QA

특정조건의 포인트내역 삭제방법 문의

본문

안녕하세요.
회원가입할때 생기는 포인트 외에 다른 내역이 없는 회원들의 포인트를 삭제하고 싶습니다.

처음에는 DB에서 직접

 


SELECT *
FROM `g5_point`
GROUP BY mb_id
HAVING count(mb_id) = 1  

 

이런 식으로 검색해서 나온 결과를 몽땅 삭제해주었더니
g5_member 쪽의 mb_point쪽이 변화가 없더라구요.
아차! 싶었죠 ㅠㅠ
뭐 당연한 결과이죠..

 

그래서 일단은 원래대로 복구해놓고
이번엔 관리자화면 포인트 내역에서 삭제하면 되겠다 싶어서
제가 원하는 내역을 출력하기 위해 /adm/point_list.php에서 
포인트내역을 불러오는 쿼리를 위와 똑같이 수정했더니
원래 갯수보다 너무 많이 나와버리니 이것도 아닌것 같고ㅠㅠ

 

요점은 포인트내역 갯수가 1개뿐인 회원들의
포인트내역삭제와 함께 member테이블의 mb_point에도 반영할 수 있는 좋은 방법이 있는지 도움을 구합니다.
감사합니다.

이 질문에 댓글 쓰기 :

답변 2

https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=217

참고해서 조건만 바꿔서 해보세요.

애시당초 제가 처음에 작성했던 쿼리에는 조건절이 없어서
포인트리스트 목록으로 불러오기 어려웠었나봅니다.

아래코드처럼 WHERE절을 추가해서 수정했더니 해결되었습니다.

SELECT *
FROM g5_point
WHERE mb_id IN (
    SELECT mb_id
    FROM g5_point
    GROUP BY mb_id
    HAVING COUNT(*) = 1
)

알려주신 링크가 도움이 되었습니다.
감사합니다.

SELECT * FROM `g5_point` GROUP BY mb_id HAVING count(mb_id) = 1  

이것도 가능합니다만

bbs/"register_form_update.php"를 보면

    // 회원가입 포인트 부여
    insert_point($mb_id, $config['cf_register_point'], '회원가입 축하', '@member', $mb_id, '회원가입');

이렇게 되어 있습니다.
우선은 회원 가입 포인트만 고르고

 select a.* from g5_point a left join g5_point b on a.mb_id=b.mb_id and a.po_id < b.po_id  where a.po_rel_table='@member' and b.po_id is null;

g5_member.mb_point에서 차감하면 되겠네요.

update ( select a.* from g5_point a left join g5_point b on a.mb_id=b.mb_id and a.po_id < b.po_id  where a.po_rel_table='@member' and b.po_id is null ) a inner join g5_member b on a.mb_id=b.mb_id

set b.mb_point=b.mb_point-a.po_point

그리고 회원 가입 포인트을 삭제하면 되겠네요.

delete a from  g5_point a left join g5_point b on a.mb_id=b.mb_id and a.po_id < b.po_id  where a.po_rel_table='@member' and b.po_id is null;

 

꼭 백업 후에 시도해 보세요.

 

공부삼아 시도해봤더니 완벽하게 작동했습니다!!!

왜 같은 테이블을 a, b로 나누었을까하고 검색해보니 셀프조인이라는 게 있네요.
DB지식이 어정쩡하게 있어서 100%이해는 못했습니다.
b.po_id에 어떻게 null값이 들어가는건지(?)만 이해한다면 정답이 보일 듯 하네요.

이미 채택이 끝난 뒤에 답변을 달아주셔서 좋아요로 대신합니다ㅠㅠ
감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 823
QA 내용 검색
filter #DB ×

회원로그인

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