0

私は次のクエリを持っていますが、,SUM(amount) AS totalそれはうまくいきません。ここで問題となるのは、テーブルからすべての値を選択するvouchersと同時にamount、という別のテーブルからフィールドの合計値を取得したいということdetailsです。

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

4

1 に答える 1

1

details合計をサブクエリに入れますLEFT JOIN。オリジナルには、集計のGROUP BY句がありませんでした。SUM()

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ます)

于 2012-04-07T19:52:45.647 に答える