Code: Alles auswählen
SELECT "ID",
COALESCE ( "Pacht/ Verw. Gebühr",
( SELECT "qm" FROM "Garten" WHERE "a"."Garten_ID" = "ID" )
* "EUR/qm",
0 )
AS "Pacht/ Verw. Gebühr_berechnet"
FROM "Pacht" AS "a"
Der Tabelle "Pacht" ist auch ein Alias zugewiesen. Dies ist notwendig, damit ich in einer Unterabfrage etwas auslesen kann, was sich auf den aktuellen Datensatz bezieht.
Code: Alles auswählen
COALESCE ("Pacht/ Verw. Gebühr", ...)
Aus der Tabelle "Garten" soll der Wert für die "qm" ausgelesen werden, der zu aktuellen Datensatz passt. Da ich aber (um eine editierbare Abfrage problemlos zu behalten) die Tabelle "Garten" gar nicht in die Tabellen mit aufgenommen habe, weiß diese Unterabfrage erst einmal nicht, welche qm-Zahl denn ausgelesen werden soll. Also sage ich ihr: Suche in der äußeren Abfrage ("a" - Alias der äußeren Tabelle) dazu das Feld "Garten_ID". Dann weißt Du, zu welchem Garten Du etwas auslesen sollst. Und "EUR/qm" müssen aus der Tabelle "Pacht", jetzt "a", direkt ausgelesen werden.
Ist auch diese Abfrage ohne Ergebnis, so soll stattdessen '0' als Ausgabe der Rechnung geschrieben werden.
Die Sache mit der Unterabfrage kannst Du auch verhindern, indem Du eben beide Tabellen in die Abfrage aufnimmst. Dann müssen aber beide Primärschlüssel aus den Tabellen vorhanden sein und auch die Abfrage so gestellt sein, dass selbst Datensätze aus "Pacht" dabei sind, die keine "Garten_ID" haben.
Gruß
Robert