von RobertG » Fr, 04.05.2012 17:13
Hallo Timo,
ich nehme einmal den Code, aus dem die Ansicht besteht und stelle da etwas um:
Code: Alles auswählen
SELECT DISTINCT "ArtikelID", IFNULL((SELECT SUM("Anzahl") FROM "Bestand" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Erst_Bestandssumme", IFNULL((SELECT SUM("Anzahl") FROM "Zugang" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Zugangssumme" , IFNULL((SELECT SUM("Anzahl") FROM "Verbrauch" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Verbrauchssumme" FROM "Bestand" AS "a"
Für viele Leute, die vorher mit Tabellenkalkulationen gearbeitet haben, ist es selbstverständlich, dass ein leeres Feld einfach als 0 angesehen wird. Datenbanken sind da etwas präziser. Kombiniere ich etwas mit einem leeren Feld, so wird daraus - nichts. Das Feld bleibt einfach leer. Ein leeres Feld wird als NULL deklariert.
Mit der Funktion IFNULL('Ausdruck, der erscheinen soll - wenn der NULL ist erscheint der andere', 0) weise ich so dem leeren Feld die Zahl 0 zu. Wenn Du also keinen Verbrauch hast, dann wird der als 0 ausgegeben.
Gruß
Robert
Hallo Timo,
ich nehme einmal den Code, aus dem die Ansicht besteht und stelle da etwas um:
[code]
SELECT DISTINCT "ArtikelID", IFNULL((SELECT SUM("Anzahl") FROM "Bestand" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Erst_Bestandssumme", IFNULL((SELECT SUM("Anzahl") FROM "Zugang" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Zugangssumme" , IFNULL((SELECT SUM("Anzahl") FROM "Verbrauch" WHERE "ArtikelID" = "a"."ArtikelID"),0) AS "Verbrauchssumme" FROM "Bestand" AS "a"
[/code]
Für viele Leute, die vorher mit Tabellenkalkulationen gearbeitet haben, ist es selbstverständlich, dass ein leeres Feld einfach als 0 angesehen wird. Datenbanken sind da etwas präziser. Kombiniere ich etwas mit einem leeren Feld, so wird daraus - nichts. Das Feld bleibt einfach leer. Ein leeres Feld wird als NULL deklariert.
Mit der Funktion IFNULL('Ausdruck, der erscheinen soll - wenn der NULL ist erscheint der andere', 0) weise ich so dem leeren Feld die Zahl 0 zu. Wenn Du also keinen Verbrauch hast, dann wird der als 0 ausgegeben.
Gruß
Robert