Office - Word, Excel und Co. 9.747 Themen, 41.434 Beiträge

Probleme mit Access-Abfragen

McMorning / 5 Antworten / Flachansicht Nickles

Hi Leute,

mich plagt folgendes Problem in MS-Access:

Ich habe in Access zwei Tabellen die folgendermaßen aufgebaut sind:

Tabelle 1 Tabelle 2
Monat Umsatz Monat Umsatz
1 500 1 470
2 800 2 820
3 750 3 420
4 300 4 640
5 600 5 720
6 430 6 530
7 520 7 240
8 670 8 310
9 410 9 720
10 600 10 470
11 290 11 410
12 320 12 460

Aus diesen beiden Tabellen möchte ich nun eine Abfrage erstellen die den folgenden Aufbau hat:
Abfrage 1
Monat Umsatz1 Umsatz2
1 500 470
2 800 820
3 750 420
4 300 640
5 600 720
6 430 530
7 520 240
8 670 310
9 410 720
10 600 470
11 290 410
12 320 460


Also einfach eine Art Zusammenfassung dieser beiden Tabellen. Daher habe ich es mit folgender Abfrage versucht:

SELECT Tabelle1.Monat, Tabelle1.Umsatz, Tabelle2.Umsatz
FROM Tabelle1, Tabelle2;

Dabei entsteht jedoch eine Tabelle die folgenden Aufbau besitzt (Hier jetzt nur die jeweiligen Monate aufgelistet und nicht die Werte!):

Monat Umsatz1 Umsatz2
1 1 1
2 2 1
3 3 1
... ... ...
11 11 1
12 12 1
1 1 2
2 2 2
3 3 3
... ... ...
Und so weiter...

Die Frage ist also, wie bekomme ich meine einfache kleine Tabelle mit den 12 Datensätzen und nicht diese endlose Verknüpfung von allen Datensätzen?? In diesem Fall z.B. hat die Tabelle 1728 Datensätze, oder auch kurz 12³. Bei mehr oder weniger Spalten erhöht sich der Exponent entsprechend.

Hat das jetzt jemand verstanden?? Falls nicht, dann probiert es einfach mal aus in Access und ihr bekommt den gleichen Fehler!!

Also, hoffe ihr könnt mir helfen!!

Gruß
McMorning
bei Antwort benachrichtigen
(Anonym) McMorning „Probleme mit Access-Abfragen“
Optionen

>In diesem Fall z.B. hat die Tabelle 1728 Datensätze,

Falsch, die Abfrage liefert "nur" 144, also 12^2 Datensaetze.

>Falls nicht, dann probiert es einfach mal aus in Access und ihr bekommt den gleichen Fehler!!

Hab ich gerade - das ist aber kein ACCESS-Fehler, sondern ein klassischer Anwender-Fehler, naemlich ein klassischer Fall von "Karthesischem Produkt".
Woher, bitteschoen, soll ACCESS bei deiner Abfrage wissen, welche Werte aus der zweiten Tabelle es welchem Monat in der ersten Tabelle zurodnen soll?
Das musst du ACCESS schon sagen - und dann lautet die Abfrage:

SELECT tblUmsatz1.Monat, tblUmsatz1.umsatz, tblUmsatz2.Umsatz
FROM tblUmsatz1, tblUmsatz2
WHERE tblUmsatz1.Monat=tblUmsatz2.Monat;

(ich habe in meinem Test die Tabellen "tblUmsatz1" und "tblUmsatz2" genannt).

Das obige ist ein klassischer Join, hier ein sogenannter "Equi-Join".
ACCESS versteht zwar theoretisch verknuepfungen zwischen Tabellen auf diese Weise, also nach SQL-89,- schneller und sicherer arbeitet es, wenn man ACCESS dazu ueberredet,
seine eigenen Verknuepfungsbefehle anzuwenden.

Ziehe Dazu im Abfrageentwurf einfach das Feld "Monat" aus Tabelle 1 in das Feld "Monat" in Tabelle zwei.
Das fuehrt zu folgendem SQL-Code:

SELECT tblUmsatz1.monat, tblUmsatz1.umsatz, tblumsatz2.umsatz
FROM tblUmsatz1 INNER JOIN tblumsatz2 ON tblUmsatz1.monat = tblumsatz2.monat;

Das "INNER JOIN ....ON" ist absolut gleichwertig zu der WHERE-Klausel meiner obigen Abfrage - ACCESS verarbeitet es aber schneller, und kann die so erstellte Verknuepfung auch grafisch darstellen.

Kannst du uebrigens ueberpruefen, in dem du diesen SQL-Code gleich in das SQL-Fenster tippst. Schaltest du danach um auf den grafischen Abfrageentwurf, stellt dir ACCESS die Verknuepfung zwischen den Tabellen auch dar.

Volker

bei Antwort benachrichtigen