Grundlagen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Scampi
Beiträge: 3
Registriert: Mi, 29.10.2014 17:32

Grundlagen

Beitrag von Scampi »

Moin zusammen,

ich oute mich zuerst einmal als "Newbie" im Bereich Datenbanken, da meine ersten Erfahrungen bereits deutlich über 15 Jahre zurück liegen und ich seitdem nur User war.

Ich sitze nun schon seit Stunden und grüble, durchforste das Netz und lese Forenbeiträge, in der Hoffnung den zündenden Funken zu finden, daher mein Eintrag hier. Ich suche nach einem Hinweis, wie ich das machen kann oder wo ich danach suchen soll/kann, denn mit dem "Fach-Chinesisch" tue ich mich noch schwer und habe bestimmt viele nützliche Tipps übersehen weil mir die Schlagwörter fehlten oder ich mit den angegebenen nichts anfangen konnte.

Ich habe vereinfacht dargestellt folgendes vor...

- Datenbank mit Obst und Gemüsesorten (kein Problem soweit)
- Datenbank mit den Zukäufen an Obst und Gemüse, sortiert nach Datum und Kathegorie (Obst bzw. Gemüse), sowie Menge
- Datenbank mit meinen täglichen Verbräuchen

Ich möchte nun wissen, wie man es anstellen kann, dass ich mir zu einem beliebigen Datum anzeigen lassen kann, welche Mengen ich noch in meinem Lagerbestand habe, also wie ich von den diversen Einlagerungen minus den jeweiligen Auslagerungen zum Restbestand kommen kann.

Kann mir da jemand einen Tipp geben wonach ich da am besten suchen soll bzw. wie ich die Datenbank am besten aufbauen sollte.

Vielen Dank schonmal für die hoffentlich zahl- und hilfreichen Antworten.

Gruß Scampi
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Grundlagen

Beitrag von RobertG »

Hallo Scampi,

Du hast ja vermutlich mindestens 3 Tabellen: Zugang, Obst und Abgang ('Obst' heißt natürlich 'Obst_Gemüse' oder ähnlich).
In der Tabelle "Zugang" sind mindestens die Felder "Datum", "Anzahl" und "Obst_ID" (Fremdschlüssel aus der Tabelle "Obst")
Die Tabelle "Abgang" sieht von den Feldern her genauso aus.

Code: Alles auswählen

SELECT SUM("Anzahl") FROM "Zugang"
liefert alle Zugänge unabhängig von der Obst- oder Gemüsesorte und unabhängig vom Datum.

Code: Alles auswählen

SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < '2014-04-01'
liefert alle Zugänge unabhängig von der Obst- oder Gemüsesorte bis zum 1.4.2014 Datum.

Code: Alles auswählen

SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < '2014-04-01' AND "Obst_ID" = 1
liefert alle Zugänge, die in der Tabelle "Obst" unter der ID '1' (Primärschlüssel in der Tabelle "Obst") verzeichnet sind, bis zum 1.4.2014 Datum.

Code: Alles auswählen

SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < :Datum AND "Obst_ID" = 1
fragt bei der Abfrage nach einer Datumsangabe.
Und jetzt "Zugang" und "Obst":

Code: Alles auswählen

SELECT "ID", "Obst", (SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < :Datum AND "Obst_ID" = "a"."ID") AS "Zugang" FROM "Obst" AS "a"
Die Summe wird genau für das Obst abgefragt, das in der äußeren Abfrage steht. Dies wird durch die Zuweisung eines "a" zu der Tabellenbezeichnung der Tabelle der äußeren Abfrage erreicht. Der Text für den Abgang ist identisch mit dem des Zuganges - bis auf die betroffene Tabelle. Komplett mit Saldo sieht das dann so aus:

Code: Alles auswählen

SELECT "ID", "Obst", (SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < :Datum AND "Obst_ID" = "a"."ID") AS "Zugang" , (SELECT SUM("Anzahl") FROM "Abgang" WHERE "Datum" < :Datum AND "Obst_ID" = "a"."ID") AS "Abgang", (SELECT SUM("Anzahl") FROM "Zugang" WHERE "Datum" < :Datum AND "Obst_ID" = "a"."ID") - (SELECT SUM("Anzahl") FROM "Abgang" WHERE "Datum" < :Datum AND "Obst_ID" = "a"."ID") AS "Saldo" FROM "Obst" AS "a"
Gruß

Robert
Antworten