Office - Word, Excel und Co. 9.754 Themen, 41.624 Beiträge

Probleme mit Access-Abfragen

McMorning / 5 Antworten / Baumansicht 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
neanderix (Anonym) „ In diesem Fall z.B. hat die Tabelle 1728 Datensätze, Falsch, die Abfrage...“
Optionen

AAAAAAaaaaaaaaaarrrrrrrrrrrrrrrgghhhhhhhhhh!

Warum bin ich tortz korrekter Eingabe von Username und Passwort ploetzlich "Anonym"?

Volker "neanderix"

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
(Anonym) McMorning „Probleme mit Access-Abfragen“
Optionen

Relativ einfach: du erstellst (am besten in der Entwurfsansicht) Tabelle1 mit Monat (Felddatentyp Zahl; bei Feldatengröße reicht Integer statt Long Integer – verschnellert bei großen Datenbanken den Prozess) und mit Umsatz1.

In der ersten Tabelle ordnest du dem Feld Monat den Primärschlüssel zu.

Dann erstellst du Tabelle2 genauso (wichtig: Monat in Tabelle2 muß genauso geschrieben werden wie in tabelle1; diesmal ordnest du keinen!! Primärschlüssel zu; zur Übersichtlichkeit Umsatz in zweiter tabelle Umsatz2 nennen).

Beide Tabellen speichern.

Abfrage in der Entwurfsansicht neu erstellen. Beide Tabellen zur Abfrage hinzufügen.
Da du einen Primärschlüssel für Tabelle1-Monat erstellt hast, verknüpft Access Monat aus Tabelle1 automatisch mit Monat aus Tabelle2.
Du siehst in der Entwurfsansicht eine Verbindung zwischen beiden Tabellen.
Nun mußt du in der Entwurfsansicht der Abfrage nur noch auf die Felder in den beiden Tabellen doppelklicken, die in der Abfrage enthalten sein sollen (Tabelle1 – Monat und Umsatz1; Tabelle2 – Umsatz2).
Wenn du Wert drauflegst, dann kannst du in ein freies Feld der Entwurfsansicht der Abfrage noch eingeben: =[Umsatz1]+[Umsatz2] und in einer weiteren Spalte der Abfrage wird beides addiert (Häckchen bei Anzeigen nicht vergessen).
Tipp: modifizieren läßt sich die Verknüpfung zwischen Monat/Tabelle1 und Monat/Tabelle2 durch Doppelklick auf die Verbindungslinie zwischen beiden.

bei Antwort benachrichtigen
neanderix (Anonym) „Relativ einfach: du erstellst am besten in der Entwurfsansicht Tabelle1 mit...“
Optionen

>Da du einen Primärschlüssel für Tabelle1-Monat erstellt hast, verknüpft Access Monat aus Tabelle1 automatisch mit Monat aus Tabelle2.

Das stimmt zwar, aber: es fuehrt hier nur ausnahmsweise zum richtigen (weil korrekt verknuepft) Ergebnis.
Ueberpruefe es und lege Spasseshalber den PK mal auf das Umsatzfeld von Tabelle 2, und entferne ihn aus dem "Monat"-Feld.
ACCESS wird jetzt in der Abfrage das Feld "Monat" aus Tabelle 1 mit Feld "Umsatz" aus Tabelle 2 verknuepfen - was zu aeusserst unsinnigen Ergebnissen fuehrt.

Besser ist, ACCCESS das nicht selbst zu ueberlassen, sondern die Verknuepfung manuell zu setzen.

Volker "neanderix"

Computers are like airconditioners - they stop working properly when you open Windows Ich bin unschuldig, ich habe sie nicht gewählt!
bei Antwort benachrichtigen
(Anonym) neanderix „ Da du einen Primärschlüssel für Tabelle1-Monat erstellt hast, verknüpft...“
Optionen

bei mir wird da keine Verknüpfung erstellt, Access erstellt mit Primärschlüssel nur automatische Verknüpfungen, wenn die Feldnamen der Tabellen identisch sind (zumindest mit Access97 oder 2000) . Das ist recht praktisch, wenn du mehrere Tabellen hast, die immer über Monat (oder sonstwas) verknüpft werden sollen. Ansonsten hast du natürlich recht, kann man auch selbst machen, indem man in der Entwurfsansicht der Abfrage das gewünschte Feld der einen Tabelle anklickt und zu dem Feld der anderen Tabelle zieht (Feld mit dem Verknüpfung gewünscht ist).

bei Antwort benachrichtigen