Ok, ich habe mir die Unterrichtsreihe_Rechnungsdatenbanken mal angeschaut und habe mal meine Abfrage entsprechend umgebaut.
Hier meine ursprüngliche Abfrage:
Code: Alles auswählen
SELECT "TBL_Verkauf".*, "TBL_Produkte"."Preis", "Anzahl" * "Preis" FROM "TBL_Verkauf", "TBL_Produkte" WHERE "TBL_Verkauf"."ID_Produkte" = "TBL_Produkte"."ID"
Es sollen alle Felder aus TBL_Verkauf sowie der Einzelpreis und die Einzelsumme der verkauften Produkte angezeigt werden.
Analog zur Unterrichtsreihe habe ich das mal angepasst:
Der Tabelle TBL_Verkauf den Alias a zuweisen:
Code: Alles auswählen
SELECT "a".*, "TBL_Produkte"."Preis", "Anzahl" * "Preis" FROM "TBL_Verkauf" AS "a", "TBL_Produkte" WHERE "a"."ID_Produkte" = "TBL_Produkte"."ID"
"Anzahl" * "Preis" durch Unterabfrage ersetzen:
Code: Alles auswählen
SELECT "a".*, "TBL_Produkte"."Preis", ( SELECT "a"."Anzahl" * "Preis" FROM "TBL_Produkte" WHERE "ID" = "a"."ID_Produkte" ) AS "Anzahl * Preis" FROM "TBL_Verkauf" AS "a", "TBL_Produkte" WHERE "a"."ID_Produkte" = "TBL_Produkte"."ID"
Tabelle TBL_Produkte aus der Anfrage entfernen, d.h. "TBL_Produkte"."Preis" durch Unterabfrage ersetzen:
Code: Alles auswählen
SELECT "a".*, (select "Preis" from "TBL_Produkte" where "ID" = "a"."ID_Produkte") as "Preis", ( SELECT "a"."Anzahl" * "Preis" FROM "TBL_Produkte" WHERE "ID" = "a"."ID_Produkte" ) AS "Anzahl * Preis" FROM "TBL_Verkauf" AS "a"
So, ich hoffe das ist soweit richtig. Die Abfrage liefert zumindest mal die erwarteten Werte.
Aber ich habe nicht verstanden was ich da genau getan habe und vor allem Warum? Das Ergebnis unterscheidet sich ja nicht. Laut Unterrichtsreihe kann man keine neuen Daten eingeben, wenn man diesen Firlefanz nicht macht. Aber warum geht es ohne nicht und warum funktioniert es mit?
Ok, ich habe mir die Unterrichtsreihe_Rechnungsdatenbanken mal angeschaut und habe mal meine Abfrage entsprechend umgebaut.
Hier meine ursprüngliche Abfrage:
[code]SELECT "TBL_Verkauf".*, "TBL_Produkte"."Preis", "Anzahl" * "Preis" FROM "TBL_Verkauf", "TBL_Produkte" WHERE "TBL_Verkauf"."ID_Produkte" = "TBL_Produkte"."ID"[/code]
Es sollen alle Felder aus TBL_Verkauf sowie der Einzelpreis und die Einzelsumme der verkauften Produkte angezeigt werden.
Analog zur Unterrichtsreihe habe ich das mal angepasst:
Der Tabelle TBL_Verkauf den Alias a zuweisen:
[code]SELECT "a".*, "TBL_Produkte"."Preis", "Anzahl" * "Preis" FROM "TBL_Verkauf" AS "a", "TBL_Produkte" WHERE "a"."ID_Produkte" = "TBL_Produkte"."ID"[/code]
"Anzahl" * "Preis" durch Unterabfrage ersetzen:
[code]SELECT "a".*, "TBL_Produkte"."Preis", ( SELECT "a"."Anzahl" * "Preis" FROM "TBL_Produkte" WHERE "ID" = "a"."ID_Produkte" ) AS "Anzahl * Preis" FROM "TBL_Verkauf" AS "a", "TBL_Produkte" WHERE "a"."ID_Produkte" = "TBL_Produkte"."ID"[/code]
Tabelle TBL_Produkte aus der Anfrage entfernen, d.h. "TBL_Produkte"."Preis" durch Unterabfrage ersetzen:
[code]SELECT "a".*, (select "Preis" from "TBL_Produkte" where "ID" = "a"."ID_Produkte") as "Preis", ( SELECT "a"."Anzahl" * "Preis" FROM "TBL_Produkte" WHERE "ID" = "a"."ID_Produkte" ) AS "Anzahl * Preis" FROM "TBL_Verkauf" AS "a"[/code]
So, ich hoffe das ist soweit richtig. Die Abfrage liefert zumindest mal die erwarteten Werte.
Aber ich habe nicht verstanden was ich da genau getan habe und vor allem Warum? Das Ergebnis unterscheidet sich ja nicht. Laut Unterrichtsreihe kann man keine neuen Daten eingeben, wenn man diesen Firlefanz nicht macht. Aber warum geht es ohne nicht und warum funktioniert es mit?