영카트의 mysql 쿼리 질문입니다. 미수금 관련... > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

영카트의 mysql 쿼리 질문입니다. 미수금 관련... 정보

영카트의 mysql 쿼리 질문입니다. 미수금 관련...

본문

몇일째 고생하다 도저히 안되서 질문 올려봅니다.

영카트에서 주문관리에서 주문리스트가 쭉 출력되는데

미수금만 보이게 별도 출력 할려고 하니 안되네요 ㅠㅠ

기존 영카트 쿼리입니다.
$sql  = " select a.*, b.ct_status, "._MISU_QUERY_."
           $sql_common
           group by a.od_id
           order by $sort1 $sort2";

위 쿼리에서 _MISU_QUERY_ 이 부분이 미수금 관련 쿼리인데
여기에 추가로  미수금이 0 이상인 것만 가져오려고 해서

$misu_acc = "(SUM(b.ct_amount * b.ct_qty))-(SUM(IF(b.ct_status = '취소' OR b.ct_status = '반품' OR b.ct_status = '품절', b.ct_amount * b.ct_qty, 0)))-a.od_dc_amount-(a.od_receipt_bank + a.od_receipt_card + a.od_receipt_point)-(a.od_refund_amount + a.od_cancel_card)";

$sql  = " select a.*, b.ct_status, "._MISU_QUERY_."
           $sql_common where $misu_acc > 0
           group by a.od_id
           order by $sort1 $sort2";

이렇게 바꾸니 계속 오류가 나네요
밑에서 붉은색 글씨가 제가 별도로 추가한 내용입니다.

select a.*, b.ct_status, count(distinct a.od_id) as ordercount, /* 주문서건수 */ count(b.ct_id) as itemcount, /* 상품건수 */ (SUM(b.ct_amount * b.ct_qty) + a.od_send_cost) as orderamount , /* 주문합계 */ (SUM(IF(b.ct_status = '취소' OR b.ct_status = '반품' OR b.ct_status = '품절', b.ct_amount * b.ct_qty, 0))) as ordercancel, /* 주문취소 */ (a.od_receipt_bank + a.od_receipt_card + a.od_receipt_point) as receiptamount, /* 입금합계 */ (a.od_refund_amount + a.od_cancel_card) as receiptcancel, /* 입금취소 */ ( (SUM(b.ct_amount * b.ct_qty) + a.od_send_cost) - (SUM(IF(b.ct_status = '취소' OR b.ct_status = '반품' OR b.ct_status = '품절', b.ct_amount * b.ct_qty, 0))) - a.od_dc_amount - (a.od_receipt_bank + a.od_receipt_card + a.od_receipt_point) + (a.od_refund_amount + a.od_cancel_card) ) as misu /* 미수금 = 주문합계 - 주문취소 - DC - 입금합계 + 입금취소 */ from yc4_order a left join yc4_cart b on (a.on_uid=b.on_uid) where (SUM(b.ct_amount * b.ct_qty))-(SUM(IF(b.ct_status = '취소' OR b.ct_status = '반품' OR b.ct_status = '품절', b.ct_amount * b.ct_qty, 0)))-a.od_dc_amount-(a.od_receipt_bank + a.od_receipt_card + a.od_receipt_point)-(a.od_refund_amount + a.od_cancel_card) > 0 group by a.od_id order by od_id desc

1111 : Invalid use of group function

출력된 오류 내용입니다. ㅠㅠ

댓글 전체

한번에 할 수 없어요.

일단 모든 미수건을 select 해서,
그것들중 misu_acc가 0 보다 큰거를 php의 프로그램으로 골라 내어서
출력하게 하셔야 할 겁니다.

기존의 프로그램 앞에, while을 넣어서 데이터를 fetch 해서 새로운 배열에
넣구 그걸 다시 원래 배열로 바꿔치기 하는게 나름 간편 방법이죠.
where $misu_acc > 0

이거를

having $misu_acc > 0 으로 바꿔 보세요.

http://dev.mysql.com/doc/refman/4.1/en/select.html
having은 group by 다음 order by 전에 넣어 주세요.
전체 10 |RSS
그누4 질문답변 내용 검색

회원로그인

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