2012-04-07 3 views
0

,SUM(amount) AS total없이 다음 쿼리를 사용하면 정상적으로 작동합니다. 이제 문제는 내 테이블 vouchers에서 모든 값을 선택하고 동시에 이라는 다른 테이블에서 amount 필드의 합계 값을 가져 오려고합니다. 모든 값을 선택하고 동시에 다른 테이블에서 필드의 값을 합산합니다.

SELECT *,SUM(amount) AS total FROM vouchers 
LEFT JOIN details on vouchers.voucher_no = details.voucher_no 
LEFT JOIN accounts on accounts.code = vouchers.account_code 
WHERE (voucher_type='1' AND t_code=$code) 

나는 위의 쿼리를 시도했지만 그것은 나에게 다음과 같은 오류를 보여 주었다. (PLS 링크를 확인) 하위 쿼리에

http://i44.tinypic.com/bdaq.png

+0

당신은 GROUP BY 절없이 집계 작업을 수행 할 수 없습니다 – Teja

+0

을 문구 'WHERE (voucher.voucher_type = '1'AND voucher.t_code = $ code)' 또한'$ code'에서 SQL 삽입을 피하십시오 –

답변

1

놓습니다 details 합에 대한 당신 LEFT JOIN. 귀하의 SUM() 집합에 대한 원래 GROUP BY 조항이 누락되었습니다.

SELECT 
    vouchers.*, 
    /* from the subquery... */ 
    detailssum.total 
FROM 
    vouchers 
    LEFT JOIN (
    /* Subquery gets total per voucher_no to join against vouchers */ 
    SELECT voucher_no, t_code, SUM(amount) as total FROM details GROUP BY voucher_no 
) detailssum ON vouchers.voucher_no = detailssum.voucher_no 
    LEFT JOIN accounts on accounts.code = vouchers.account_code 
WHERE (voucher_type='1' AND t_code=$code) 

(우리는 $code 가정이 포함 된 소독 이미을 값을 경계 - 검사) 당신은 어디에서 테이블의 이름을 앞에 추가해야 ...

+0

Thanks Michael, 답장을 보내 주셔서 감사합니다. 귀하의 코드를 시도했지만 여전히 오류가 발생했습니다. 링크 .http : //i39.tinypic.com/2j1ofh1.png를 확인하십시오. 예 $ code는 이미 'details'테이블에있는 값을 포함하고 있습니다. –

+0

@black_belt't_code'는'바우처 (voucshers) '에있는 열이라고 가정했습니다. 어떤 테이블에't_code '가 들어 있습니까? 그것이'details'에 있다면, 서브 쿼리를 조금 수정해야합니다. –

+0

다시 한번 감사드립니다. "t_code"가 포함 된 테이블은 세부 사항입니다. 하위 쿼리를 수정할 위치를 제게 알려주십시오. 다시 한번 감사드립니다 :) –

관련 문제