0

スクリプトに問題がありmysqlます。

私は2つのテーブルを持っています。別のテーブルと比較invoiceAmountしたいです。状況: 1 つの請求書に対して多くの支払いが可能です。比較しpaymentAmountたいです。invoiceAmount (table A)paymentAmount (table B)

私はすでにpaymentAmount同じinvoiceIDの計算に参加していますが、私の問題はそれを比較する方法です(すべての行の両方のテーブルからの同じinvoiceIDの合計paymentAmount(table B)) invoiceAmount (table A)? 本当にあなたの助けが必要です..

私のスクリプトは次のとおりです。

SELECT invoice.InvoiceID, invoice.InvoiceAmount, pays.InvoiceID, sum(pays.PaymentAmount) as pays, invoice.InvoiceDate 
FROM `payment from customer` as pays
JOIN invoice ON(pays.InvoiceID=invoice.InvoiceID)
WHERE pays.InvoiceID in (
    SELECT InvoiceID 
    FROM `payment from customer`
    GROUP BY InvoiceID
    HAVING count(*) > 1)
GROUP BY pays.InvoiceID
4

2 に答える 2

0
SELECT * 
FROM (select invoice.InvoiceID, 
             invoice.InvoiceAmount, 
             pays.InvoiceID, 
             pays.PaymentAmount as pays, 
             invoice.InvoiceDate ,
             (select sum(a.PaymentAmount) 
                from `payment from customer` a 
               where a.InvoiceID = invoice.InvoiceID) totalPays
        from `payment from customer` as pays JOIN invoice 
          ON (pays.InvoiceID=invoice.InvoiceID) ) temp
where InvoiceDate > totalPays
于 2013-07-08T08:40:15.347 に答える
0

まだ支払わなければならない合計を計算するフィールドを結果テーブルに追加します。

たとえば、未払いの請求書のリストが必要な場合は、次のようにします。

  SELECT invoice.InvoiceID,
         invoice.InvoiceAmount,
         pays.InvoiceID,
         sum(pays.PaymentAmount) AS pays,
         sum(pays.PaymentAmount) - invoice.InvoiceAmount AS StillToPay
         invoice.InvoiceDate
    FROM `payment from customer` AS pays
         JOIN invoice ON pays.InvoiceID = invoice.InvoiceID
   WHERE pays.InvoiceID IN (   SELECT InvoiceID FROM `payment from customer`
                             GROUP BY InvoiceID
                               HAVING count(*) > 1 )
     AND StillToPay > 0
GROUP BY pays.InvoiceID

テストされていないクエリ!

于 2013-07-08T08:40:53.693 に答える