사용가능한 쿠폰갯수 확인하기

사용가능한 쿠폰갯수 확인하기

QA

사용가능한 쿠폰갯수 확인하기

답변 4

본문

쿼리를 보니 현재는 
        $sql = " select cp_id, cp_type, cp_price, cp_trunc, cp_minimum, cp_maximum
                    from {$g5['g5_shop_coupon_table']}
                    where cp_id = '{$_POST['sc_cp_id']}'
                      and mb_id IN ( '{$member['mb_id']}', '전체회원' )
                      and cp_start <= '".G5_TIME_YMD."'
                      and cp_end >= '".G5_TIME_YMD."';

이렇게 사용한 쿠폰 구분을 따로 하지 않고 쿼리문 돌린후에
 is_used_coupon($member['mb_id'], $cp['cp_id']);
함수로 for 문 안에서 사용한 쿠폰인지 구분하는걸로 확인됩니다.

저는 위에 커리에서 애초에 사용이 된 쿠폰을 제외한 하나의 쿼리를 만들고 싶습니다.

함수안에서  $sql = " select count(*) as cnt from {$g5['g5_shop_coupon_log_table']} where mb_id = '$mb_id' and cp_id = '$cp_id' "; 해당 쿼리로 사용한 쿠폰인지 확인하던데 저 두 쿼리를 하나로 만드는 방법은 없을까요?


                      

이 질문에 댓글 쓰기 :

답변 4

 
        $sql = " select A.cp_id, A.cp_type, A.cp_price, A.cp_trunc, A.cp_minimum, A.cp_maximum
                    from {$g5['g5_shop_coupon_table']} A

inner join {$g5['g5_shop_coupon_log_table']} B

on A.mb_id=B.mb_id and A.cp_id=B.cp_id

where B.mb_id is null
                    and  A.cp_id = '{$_POST['sc_cp_id']}'
                      and A.mb_id IN ( '{$member['mb_id']}', '전체회원' )
                      and A.cp_start <= '".G5_TIME_YMD."'
                      and A.cp_end >= '".G5_TIME_YMD."';
 

이 쿼리는 아무런 레코드도 가져오지 못하네요 ㅠㅠ 안쓴 쿠폰 3개가 있는데

우선 쿠폰을 안쓰게 되면 {$g5['g5_shop_coupon_log_table']} 해당 테이블에 아무런 데이터가 없어서

조인이 성립할수 없는거 같아요.

영카트 설계상 문제가 좀 있어보이네요.

쿠폰 사용한 건지 아닌지를 매번 로그를 비교해서 체크하는 건 너무 비효율적 아닌가요... 

 

쿠폰 자체에 is_used 필드 하나 추가해서 사용하면 체크하는 정도로 하면 훨씬 나을 텐데요.

 

g5_shop_coupon 에 추가해서 ... 

 

직접 수정하여 사용하는 걸 일단은 추천드리고요. 앞으로 영카트에서 이렇게 버전업해주면 좋겠네요

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 79
© SIRSOFT
현재 페이지 제일 처음으로