Frage zur Abfrage

18/08/2008 - 11:56 von Christian Fette | Report spam
Hallo,

ich habe eine Tabelle mit Stammdaten. In einer zweiten Tabelle befinden
sich Detaildaten. Dummerweise können Verweise auf die Stammdaten in dieser
Detailtabelle in 5 verschiedenen Feldern vorkommen.

Bsp: Stammdaten
Name Vorname Kürzel
Meier Andreas AM
Lehmann Otto OL
Schmidt Helga HS
Wuttke Karl KW

Bsp: Detail

Datum TN1 TN2 TN3 TN4 TN5
01.04.08 AM OL HS
15.05.08 HS AM
24.05.08 OL KW AM

Wie kann ich nun für jeden Stammdatensatz die Detailsàtze abfragen?

Gruß + Dank

Chr.

Das Portal für den Segler in Holland:
www.segler-in-holland.de
www.segler-in-holland.de/forum
 

Lesen sie die antworten

#1 Henry Habermacher
18/08/2008 - 12:30 | Warnen spam
Hallo Christian

"Christian Fette" wrote in message
news:1tjtqv2osiiho$

ich habe eine Tabelle mit Stammdaten. In einer zweiten Tabelle befinden
sich Detaildaten. Dummerweise können Verweise auf die Stammdaten in dieser
Detailtabelle in 5 verschiedenen Feldern vorkommen.



Der Grund liegt an der fehlenden Normalisierung! Diese Schlüssel gehören in
eine andere Tabelle.

Bsp: Stammdaten
Name Vorname Kürzel
Meier Andreas AM
Lehmann Otto OL
Schmidt Helga HS
Wuttke Karl KW

Bsp: Detail

Datum TN1 TN2 TN3 TN4 TN5
01.04.08 AM OL HS
15.05.08 HS AM
24.05.08 OL KW AM

Wie kann ich nun für jeden Stammdatensatz die Detailsàtze abfragen?



Der saubere Weg wàre die Tabelle Stammdaten zu normalisieren. Das würde
heissen, dass Du eine Kürzeltabelle zur Stammdaten Tabelle anlegen und mit
den Kürzeln füllst, so dass Du anschliessend von Details 0 - n Kürzel hast,
also z.B. so:

INSERT INTO Kuerzel (DetailID, Kuerzel)
SELECT DetailID, TN1 FROM Details
UNION
SELECT DetailID, TN2 FROM Details
UNION
SELECT DetailID, TN3 FROM Details
UNION
SELECT DetailID, TN4 FROM Details
UNION
SELECT DetailID, TN5 FROM Details

Und nun kannst Du die 3 Tabellen verjoinen.

In Deinem Fall musst Du nun halt eine komplizierte Join Bedingung machen

SELECT Name, Vorname, Datum
FROM Stammdaten S
INNER JOIN Detail D
ON (S.Kürzel = D.TN1 OR S.Kuerzel = D.TN2 OR S.Kuerzel = D.TN3 OR
S.Kuerzel = D.TN4 OR S.Kuerzel = D.TN5)

Oder Du verzichtest auf die Join Bedingung und löst es mit einer
traditionellen WHERE Klauswel

SELECT Name, Vorname, Datum
FROM Stammdaten S,
Detail D
WHERE S.Kürzel = D.TN1
OR S.Kuerzel = D.TN2
OR S.Kuerzel = D.TN3
OR S.Kuerzel = D.TN4
OR S.Kuerzel = D.TN5

HTH
Henry

Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen