2016-07-07 7 views
0

Ich versuche, die folgende Abfrage zu tun:MYSQL Summe der Spalten in verknüpften Tabelle

SELECT 
(
    SELECT 
    COUNT(*) 
    FROM 
    pl_invoices 
    JOIN 
    pl_invoice_articles 
    ON 
    pl_invoices.invoice_id = pl_invoice_articles.invoice_article_invoice_id 
    WHERE 
    pl_invoices.invoice_amount_paid = SUM(pl_invoice_articles.invoice_article_price) 
) as 'Aantal Betaald' 

Also: Ich muß wissen, wie viele Rechnungen bezahlt werden, aber der einzige Weg, das zu wissen, ist das zu machen Summe aller Rechnungsartikel und vergleichen Sie diese mit dem Gesamtbetrag bezahlt.

Diese Abfrage funktioniert nicht und ich weiß nicht, was ich falsch mache. Gibt es jemanden, der mir helfen kann?

Vielen Dank im Voraus!

+0

Bitte fügen Sie Ihre Tabellendefinition hinzu –

Antwort

1

Verwendung having-Klausel statt, wo

SELECT cnt as 'Aantal Betaald' from (
    SELECT COUNT(*) AS CNT, invoice_amount_paid FROM pl_invoices pl JOIN pl_invoice_articles pla 
    ON  pl.invoice_id = pla.invoice_article_invoice_id 
    having  pl.invoice_amount_paid = SUM(pla.invoice_article_price) 
) tt ; 
+0

Daraus ergibt sich folgendes: Unbekannte Spalte 'pl.invoice_amount _paid 'in' having clause ', also habe ich in der zweiten auswahl invoice_amount_paid hinzugefügt, aber dann bekomme ich einen leeren Wert –

+0

Nevermind, es funktioniert mit Hinzufügen von' invoice_amount_paid ', Danke! –

+0

Ich denke, Ihre pl_invoices Tabelle enthält die Spalte "invoice_amount_paid" ?? –

0

Eine Lösung für diese Abfrage ist die Summe zu berechnen:

select 
    invoice_article_invoice_id, 
    SUM(invoice_article_price) as tot 
from 
    pl_invoice_articles 
group by 
    invoice_article_invoice_id 

und kommen Sie es als eine Unterabfrage in der pl_invoices Tabelle:

select count(*) 
from 
    pl_invoices inner join (
    select 
     invoice_article_invoice_id, 
     SUM(invoice_article_price) as tot 
    from 
     pl_invoice_articles 
    group by 
     invoice_article_invoice_id 
) s on pl_invoices.invoice_id = s.invoice_article_invoice_id 
where 
    pl_invoices.invoice_amount_paid = s.tot