Hallo Base-Spezialisten
Wahrscheinlich ist es eine Kleinigkeit aber ich komm einfach nicht drauf.
Folgendes Szenario:
Drei Tabellen, eine Tabelle Artikel mit den Feldern Artikelnr, Bezeichnung, Beschreibung.
Eine Tabelle Einkauf mit den Feldern Artikelnr, Menge.
Und eine Tabelle Verkauf mit den Feldern Artikelnr, Menge.
Jetzt möchte den Lagerbestand meiner Artikel wissen. Habs mit Abfragen versucht aber entweder wird z.B. falsch gruppiert sodass die Ergebnisse nicht stimmen oder ich bekomme nur ein Ergebniss wenn ich einen Einkauf und Verkauf habe (habe unter Artikelnr 4 einen Einkauf aber noch keinen Verkauf, wird in der Abfrage nicht angezeigt da Artikel"."Artikelnr" = "Einkauf"."Artikelnr" existiert aber "Verkauf"."Artikelnr" = "Artikel"."Artikelnr noch nicht).
SQL-Syntax:
SELECT "Artikel"."Artikelnr", "Artikel"."Bezeichnung", "Artikel"."Beschreibung", SUM( "Einkauf"."Menge" - "Verkauf"."Menge" ) AS "Lagerbestand" FROM "Artikel", "Einkauf", "Verkauf" WHERE "Artikel"."Artikelnr" = "Einkauf"."Artikelnr" AND "Verkauf"."Artikelnr" = "Artikel"."Artikelnr" GROUP BY "Artikel"."Artikelnr", "Artikel"."Bezeichnung", "Artikel"."Beschreibung" ORDER BY "Artikel"."Bezeichnung" ASC
Ich hoffe mir kann jemand helfen
mischko
Berechnung mit Daten aus zwei bzw. drei Tabellen
Moderator: Moderatoren
Re: Berechnung mit Daten aus zwei bzw. drei Tabellen
Du musst den Join in eine Richtung gehen lassen (RIGHT OUTER JOIN ...), dann werden auch jene Sätze angezeigt, die nur einen Einkauf und keinen Verkauf haben. Der Nullwert der dann in der Spalte steht ("MV" im Beispiel unten) eignet sich aber nicht für Berechnungen, daher muss man ihn zuerst evaluieren (Case when ...) und dann eben die Berechnung oder nur den Wert der Einkaufsspalte anzeigen lassen:
g
Code: Alles auswählen
SELECT
"Artikel"."Artikelnr",
"Artikel"."Bezeichnung",
"Artikel"."Beschreibung",
SUM( "Einkauf"."Menge" ) AS "ME",
SUM( "Verkauf"."Menge" ) AS "MV",
SUM( CASE WHEN ( "Verkauf"."Menge" IS NULL ) THEN "Einkauf"."Menge" ELSE "Einkauf"."Menge" - "Verkauf"."Menge" END ) AS "Stand"
FROM
{ OJ "Verkauf" RIGHT OUTER JOIN "Einkauf" ON "Verkauf"."Artikelnr" = "Einkauf"."Artikelnr" }, "Artikel"
WHERE
"Artikel"."Artikelnr" = "Einkauf"."Artikelnr"
GROUP BY
"Artikel"."Artikelnr",
"Artikel"."Bezeichnung",
"Artikel"."Beschreibung"
ORDER BY "Artikel"."Bezeichnung" ASC
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5