사용가능한 쿠폰갯수 확인하기 채택완료
쿼리를 보니 현재는
$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개
댓글을 작성하려면 로그인이 필요합니다.
영카트가 쿠폰뿐만 아니라 페이지 로딩할때 쿼리를 비효율적으로 호출하는게 많네요..
설계를 바꾸시면서 하는것도 나쁘지 않아 보입니다.
댓글을 작성하려면 로그인이 필요합니다.
영카트 설계상 문제가 좀 있어보이네요.
쿠폰 사용한 건지 아닌지를 매번 로그를 비교해서 체크하는 건 너무 비효율적 아닌가요...
쿠폰 자체에 is_used 필드 하나 추가해서 사용하면 체크하는 정도로 하면 훨씬 나을 텐데요.
g5_shop_coupon 에 추가해서 ...
직접 수정하여 사용하는 걸 일단은 추천드리고요. 앞으로 영카트에서 이렇게 버전업해주면 좋겠네요
댓글을 작성하려면 로그인이 필요합니다.
$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."';
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
우선 쿠폰을 안쓰게 되면 {$g5['g5_shop_coupon_log_table']} 해당 테이블에 아무런 데이터가 없어서
조인이 성립할수 없는거 같아요.