2017-06-28 5 views
0

Ich habe eine Tabelle in der Datenbank mit der folgenden Struktur:berechnen mit dem Gesamtwert

trans 
- id 
- user_id 
- k_id 
- left 
- right 

Ich versuche, den Gesamtwert in der Spalte left mit COALESCE(SUM(left),0) as total1 zu bekommen. Wählen Sie auch den Gesamtwert in Spalte right mit COALESCE(SUM(right),0) as total2.

Für diesen Teil funktioniert der Code.

Danach habe ich die SUM(total1 - total2) AS total

zeigen wollen Wenn ich diese Anweisung ausführen bekomme ich einen Fehler: Unknown column 'total1' in field list

Weiß jemand, wie ich dieses Problem beheben?

Hier ist meine vollständige Erklärung:

SELECT COALESCE(SUM(left),0) as total1, COALESCE(SUM(right),0) as total2, SUM(total1 - total2) AS total FROM trans WHERE user_id='2' AND k_id='120' 

Antwort

1

In SQL können Sie nicht wiederverwenden Spalte Aliase in der SELECT wo sie definiert sind. Der Grund ist einfach: SQL garantiert nicht die Reihenfolge der Auswertung von Ausdrücken in den SELECT

So, wiederholen Sie die Ausdrücke:

SELECT COALESCE(SUM(left), 0) as total1, 
     COALESCE(SUM(right), 0) as total2, 
     (COALESCE(SUM(left), 0) - COALESCE(SUM(right), 0)) as total 
FROM trans 
WHERE user_id = 2 AND k_id = 120; 

Bitte beachte, dass ich die einzelne Zitate aus den Konstanten in den WHERE entfernt. Ids sind normalerweise Zahlen. Zahlen sollten mit Zahlen verglichen werden, die keine Zeichenfolgen sind. Wenn die IDs wirklich Zeichenketten sind, dann sind die einfachen Anführungszeichen natürlich angemessen und korrekt.

+0

Es hat funktioniert. Vielen Dank – John

Verwandte Themen