2017-02-17 14 views
-1

私は以下のようなクエリを実行しようとしています:PHP MySQLのSUMマイナスSUMを選択し

SELECT (SUM(amount) - SUM(refundAmount)) as amount FROM orders WHERE $invoiceFilter AND $websiteFilter 

それは正しく金額欄の合計を取得していますが、それは、払い戻し額を差し引いていません。

このようなクエリの正しい構文は何ですか?

+1

これは、正しいことがいくつかのサンプルデータを提供し、ご希望の結果が参考になります必要があります。 – Blank

答えて

1

はこれを試してください:あなたはFROM句でサブクエリを使用することができます

SELECT SUM(amount - refundAmount) AS `amount` 
FROM orders 
WHERE 
    invoice = $invoiceFilter 
    AND website = $websiteFilter; 
1

処理する必要のあるデータをフィルタリングするための参照列のようなものがありません。ような何か:

SELECT (SUM(amount) - SUM(refundAmount)) AS amount 
FROM orders 
WHERE 
    <a_column> = $invoiceFilter 
    AND <another_column> = $websiteFilter; 
1

SQL:

SELECT amount - refund 
FROM (SELECT SUM(amount) as amount 
     FROM orders 
     WHERE invoice = 'invoiceFilter' AND website = 'websiteFilter') as a, 
    (SELECT SUM(refundAmount) as refund 
     FROM orders 
     WHERE invoice = 'invoiceFilter' AND website = 'websiteFilter') as b; 

PHP:

mysql_query("SELECT amount - refund 
      FROM (SELECT SUM(amount) as amount 
        FROM orders 
        WHERE invoice = '" . mysql_real_escape_string($invoiceFilter). "' 
        AND website = '" . mysql_real_escape_string($websiteFilter). "') as a, 
        (SELECT SUM(refundAmount) as refund 
        FROM orders 
        WHERE invoice = '" . mysql_real_escape_string($invoiceFilter). "' 
        AND website = '" . mysql_real_escape_string($websiteFilter). "') as b; ");