Supportnet / Forum / Datenbanken
Abfrage aus mehreren Tabellen
Frage
Hallo!
Ich habe eine Datenbank, die mehrere Tabellen enthält. Jede Tabelle ist eine Teilnehmerliste mit unterschiedlichen Namen.
Ich möchte nun die Daten aus allen Tabellen quasi zusammenführen: Es soll abgefragt werden, welche Kinder (also alle unterschiedlichen) in den Teilnehmerlisten stehen. Außerdem soll es eine Aussage darüber geben, in welchen Listen die Kinder stehen (nur in einer oder in mehreren der verschiedenen Teilnehmerlisten - also Teilnahme Ostern, Sommer, Fahrt usw.).
Vielleicht kann mir jemand einen Tipp geben? Bin (wahrscheinlich erkennbar) Access-Neuling.
Danke schon jetzt,
Silvia
Antwort 1 von oliverV
Hallo Silvia,
du hast IMHO einen Fehler gemacht, indem du für jede Veranstaltung eine eigene Tabelle erstellt hast, die „richtigere“ Lösung wäre eine Teilnehmer-Tabelle mit einem weiteren Feld „Veranstaltung“ in dem du die Veranstaltung (Ostern, Sommer, usw.) erfasst.
Das Problem mit der gesamten Abfrage hat sich dann erledigt; die Teilnehmer einer Veranstaltung fragst du unter Verwendung eines Kriteriums ab (=“Ostern“).
Als Lösung für deine jetzige Situation benötigst du eine SQL-UNION-Abfrage, schau mal in der Online-Hilfe, ist recht gut erklärt.
z.B.
[Code]
SELECT tabOstern.Teilnehmer, „Ostern“ AS Veranstaltung FROM tabOstern
UNION SELECT tabSommer.Teilnehmer, “Sommer” AS Veranstaltung FROM tabSommer
ORDER BY Veranstaltung, Teilnehmer;
[/Code]
Gruß
Oliver
du hast IMHO einen Fehler gemacht, indem du für jede Veranstaltung eine eigene Tabelle erstellt hast, die „richtigere“ Lösung wäre eine Teilnehmer-Tabelle mit einem weiteren Feld „Veranstaltung“ in dem du die Veranstaltung (Ostern, Sommer, usw.) erfasst.
Das Problem mit der gesamten Abfrage hat sich dann erledigt; die Teilnehmer einer Veranstaltung fragst du unter Verwendung eines Kriteriums ab (=“Ostern“).
Als Lösung für deine jetzige Situation benötigst du eine SQL-UNION-Abfrage, schau mal in der Online-Hilfe, ist recht gut erklärt.
z.B.
[Code]
SELECT tabOstern.Teilnehmer, „Ostern“ AS Veranstaltung FROM tabOstern
UNION SELECT tabSommer.Teilnehmer, “Sommer” AS Veranstaltung FROM tabSommer
ORDER BY Veranstaltung, Teilnehmer;
[/Code]
Gruß
Oliver
Antwort 2 von mapet
Vor der DB Erstellung sich einmal Gedanken machen über die Normalisierung der Daten. Konkret: alle Adressen in eine Tabelle (tbl_Adresse); Eine Tabelle Veranstaltung (Tbl_Veranstaltungen) diese mit einer Zwischentabelle n:m Verknüpfen, da die Möglichkeit besteht dass ein Teilnehmer an mehreren Veranstaltungen teilnimmt.

