2016-07-20 11 views
1

Ich habe zwei Tabellen Rechnung und Zahlung verwendet. Ich habe versucht, bezahlten, fälligen und unbezahlten Status zu generieren.Anwendung mysql Bedingungen

Folgendes ist meine Abfrage, Dies wird alle Rechnungen und Zahlungen insgesamt geben. Wie kann ich eine Bedingung anwenden, um bezahlte, fällige, unbezahlte zu filtern. Ich kann nicht als bezahlte Betrag geben Nach erfolgreich Abfrage:

select a.*, sum(b.amount) as paidamount from tbl_invoices a left join tbl_billpayment b on a.invoiceno = b.invoiceno where a.id != '' GROUP BY b.invoiceno ORDER BY a.billdate DESC LIMIT 0,10 

Dieser Fehler geben wird

select a.*, sum(b.amount) as paidamount from tbl_invoices a left join tbl_billpayment b on a.invoiceno = b.invoiceno where a.id != '' and (paidamount >= a.total) 

Notice: Error: Unknown column 'paidamount' in 'where clause'

Ihnen für Ihre Unterstützung danken

Antwort

0

Das Problem ist in diesem Zustand.

(paidamount >= a.total) 

statt wie diese

(sum(b.amount) >=a.total) 

paidamount

zu verwenden ist nur ein Alias, der Name während der Projektion ersetzen wird.

+0

HAVING Summe (b.amount)> = a.total wird mir bezahlte Ergebnisse geben, Danke !. –

+0

Eigentlich war @dragostes Antwort auch korrekt .. – Ali786

2

paidamount nur ein Alias ​​in den Ergebnissen ist , aber es ist nicht verfügbar in der WHERE Klausel.

Sie haben den gleichen Ausdruck verwenden sum(b.amount) statt dass paidamount alias

select a.*, sum(b.amount) as paidamount 
from tbl_invoices a 
left join tbl_billpayment b on a.invoiceno = b.invoiceno 
where a.id != '' and (sum(b.amount) >= a.total) 

Darüber hinaus wird dies eigentlich nicht richtig entweder arbeiten, da Sie in WHERE Klausel Aggregatfunktion verwenden.

WHEREgeschiehtvor Gruppierung, während SUM Wert pro Gruppe berechnet. Ich denke, dass Sie HAVING Klausel hier verwenden möchten.

select a.*, sum(b.amount) as paidamount 
from tbl_invoices a 
left join tbl_billpayment b on a.invoiceno = b.invoiceno 
where a.id != '' 
GROUP BY a.id 
HAVING sum(b.amount) >= a.total 
Verwandte Themen