Ich stelle mir vor, ich vermisse etwas ziemlich offensichtlich hier.MySQL Vergleich Ergebnis in WHERE-Klausel
Ich versuche, eine Liste von "Buchungen" anzuzeigen, bei denen die Gesamtkosten höher sind als die gesamten Zahlungen für die Buchung. Die Gebühren und Zahlungen werden in separaten Tabellen gespeichert, die mit Fremdschlüsseln verknüpft sind.
Meine Anfrage so weit ist:
SELECT `booking`.`id`,
SUM(`booking_charge`.`amount`) AS `charges`,
SUM(`booking_payment`.`amount`) AS `payments`
FROM `booking`
LEFT JOIN `booking_charge` ON `booking`.`id` = `booking_charge`.`booking_id`
LEFT JOIN `booking_payment` ON `booking`.`id` = `booking_payment`.`booking_id`
WHERE `charges` > `payments` ///this is the incorrect part
GROUP BY `booking`.`id`
Meine Tabellen wie folgt aussehen:
Booking (ID)
Booking_Charge (Booking_ID, Amount)
Booking_Payment (Booking_ID, Amount)
MySQL scheint nicht die Ergebnisse aus diesen beiden Tabellen mögen zu vergleichen, Ich bin mir nicht sicher, was ich vermisse, aber ich bin mir sicher, dass es möglich ist.
keine Fehler ?, Namen sind nicht mehrdeutig? – Saikios
Das dachte ich auch, deshalb habe ich die Tabellennamen 'booking_charge' ... und' booking_payment' vor die 'Menge' gesetzt. Aber das scheint nicht in beide Richtungen zu helfen. SQL beschwert sich über Unbekannte Spalte 'Gebühren' in 'Where-Klausel' ... was wahrscheinlich ist, weil 'Gebühren' als eine Spalte während der Abfrage selbst erstellt wird. –
versuchen Sie, die 'WHERE Gebühren> Zahlungen zu entfernen und fügen Sie' HAVING Gebühren> Zahlungen am Ende. –