영카트의 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 해서 새로운 배열에
넣구 그걸 다시 원래 배열로 바꿔치기 하는게 나름 간편 방법이죠.
일단 적용해 봐야겠네요 ㅠㅠ

이거를
having $misu_acc > 0 으로 바꿔 보세요.
http://dev.mysql.com/doc/refman/4.1/en/select.html
having은 group by 다음 order by 전에 넣어 주세요.