Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Abfragen





Frage

Win2000, Access 2000 ich habe die Tabellen: Artikel, mit den Feldern Art.-Nr., Name, Beschreibung, Anfangsbestand Wareneinkauf, mit den Feldern Artikel-Nr., Name und Beschrreibung (Nachschlagefelder aus Artikel), Datum, Menge Einkauf, Lieferschein u.a. und Warenverkauf mit den gleichen Feldern, wie Wareneinkauf (Menge Einkauf: hier Menge Verkauf) Wie bekomme ich eine Abfrage hin, die mir folgendes Ergebnis liefert: Artikel-Nr., Name, Beschreibung, Anfangsbestand, Menge Einkauf gesamt, Menge Verkauf gesamt, Lagerbestand (Anfangsbestand + Menge Einkauf - Menge Verkauf), wobei in den Feldern Anfangsbestand und Menge Verkauf auch Nullwerte vorkommen.

Antwort 1 von Nanuk

Also:
Ich habe die erste Tabelle mit "tbl_Artikel" bezeichnet. Die Artikelnummer habe ich als Primärschlüssefeld definiert und mit einer 1:n-Beziehung mit dem jeweiligen Feld "Art_Nr" in den beiden anderen Tabellen verknüpft.
Die zu den Artikeln (Beschreibungen etc.) gehörenden Felder sind in dieser Tabelle gut aufgehoben, aus den anderen beiden Tabellen können sie wegbleiben (wegen der Verknüpfung --> Vermeidung von reduntanten Daten)

Da SQL und auch Access im Regelfall Feldnamen ohne Leerzeichen o. ä. besser verarbeiten kann, habe ich die übrigen Felder entsprechend umbenannt.

Dann habe ich zwei "Vor-"Abfragen erstellt (jeweils eine um für jeden Artikel den
- Gesamtverkauf und den
- Gesamteinkauf
zu ermitteln.

1. Vorabfrage "Abfrage2":

SELECT tbl_Artikel.Art_Nr, tbl_Artikel.Name, tbl_Artikel.Beschreibung, tbl_Artikel.Anfangsbestand, Sum(tbl_Wareneinkauf.Menge_Einkauf) AS [Summe von Menge_Einkauf]
FROM tbl_Artikel INNER JOIN tbl_Wareneinkauf ON tbl_Artikel.Art_Nr = tbl_Wareneinkauf.Art_Nr
GROUP BY tbl_Artikel.Art_Nr, tbl_Artikel.Name, tbl_Artikel.Beschreibung, tbl_Artikel.Anfangsbestand;


2. Vorabfrage "Abfrage3"
(Wichtig: in dieser Abfrage die Felder zur Beschreibung nicht wiederholen!!!):

SELECT tbl_Warenverkauf.Art_Nr, Sum(tbl_Warenverkauf.Menge_Verkauf) AS [Summe von Menge_Verkauf]
FROM tbl_Artikel INNER JOIN tbl_Warenverkauf ON tbl_Artikel.Art_Nr = tbl_Warenverkauf.Art_Nr
GROUP BY tbl_Warenverkauf.Art_Nr;


Die Aufteilung ist notwendig, um - bei verschieden häufigen Bestellungen oder Verkäufen eine korrekte Zahl zu ermitteln!!!

Diese beiden Abfragen führe ich dann in einer dritten zusammen, "Abfrage1":


SELECT Abfrage2.Art_Nr, Abfrage2.Name, Abfrage2.Beschreibung, Abfrage2.Anfangsbestand, Abfrage2.[Summe von Menge_Einkauf], Abfrage3.[Summe von Menge_Verkauf], [Anfangsbestand]+[Summe von Menge_Einkauf]-[Summe von Menge_Verkauf] AS Lagerbestand
FROM Abfrage2 INNER JOIN Abfrage3 ON Abfrage2.Art_Nr = Abfrage3.Art_Nr
GROUP BY Abfrage2.Art_Nr, Abfrage2.Name, Abfrage2.Beschreibung, Abfrage2.Anfangsbestand, Abfrage2.[Summe von Menge_Einkauf], Abfrage3.[Summe von Menge_Verkauf];


Die jeweils in den blauen Feldern befindlichen SQL-Codes kannst Du in Deine Abfragen unter SQL-Ansicht einfügen - vorausgesetzt Du hast Deine Felder entsprechend umbenannt oder benennst die Felder in den Abfragen um.

Zur besseren Ansicht schicke ich die die Beispiel-DB aber auch per Mail (enthält keine Makros).

Ich hoffe, Du kannst damit was anfangen...


Gruß

Nanuk

Antwort 2 von Lüer

Hallo Nanuk,

vielen Dank für Deine Mühe und schnelle Hilfe.

Gruß

D. Lüer