Datenquelle bei Abfrage angeben

Hans_Kantz

Neuer Benutzer
Beiträge
1
Hallo zusammen,
in einer großen Access-Datenbank habe ich mehrere Tabellen der gleich Struktur, die sich je nach Jahr, das Bestandteil des Tabellennamens ist, durch deren Inhalt unterscheiden. Die Abfragen sind daher auch immer die gleichen. Nun möchte ich eine allgemeingültige Abfrage erstellen, in der ich die Quelle erst beim Ausführen der Abfrage angeben. Dabei dachte ich an etwas wie "FROM HAVING...".
Gut wäre, wenn ich also den Tabellennamen eingeben könnte, besser noch nur das Jahr (der Rest der Tabellennamen ist gleich).
Hat jemand eine Idee?
Vielen Dank für eure Hilfe!
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.532
Die normale Lösung für Dein Problem wäre, es von Anfang an richtig zu machen, also nicht so wie Du. Entweder alles in eine Tabelle (was bei richtigen Datenbanken durchaus mit 3-stelligen Millionen Rows problemlos funktioniert) oder via PARTITION nach dem Jahr. Aber ich weiß weiß nicht, ob Dein 'Spielzeug' das kann.
So müßtest Du nun dynamisch zur Laufzeit die korrekte Tabelle zu bestimmen - was mit SQL nicht geht.
 

ukulele

Datenbank-Guru
Beiträge
4.647
Dein Tabellenlayout ist schlicht falsch. Deine Tabellen bilden alle die selbe Entität ab, die Information "Jahr" ist ein Attribut, gehört also in eine Spalte. Hier die Grundlage:
Um das zu "umgehen" gäbe es schon dynamische Lösungen die aber erstens in Access gar nicht möglich sind und zweitens auch außerhalb von Access absolut unangebracht wären. In deinem Fall gehört der Fehler korrigiert und da gibt es auch keine Grauzone wo das eventuell sinnvoll ist so wie es ist.
 
Werbung:

dabadepdu

Datenbank-Guru
Beiträge
953
Dabei dachte ich an etwas wie "FROM HAVING...".
Mit Having hat das kaum was zu tun, mit FROM nur bei Dir, weil Du mit diesem Design die Tabellen wechseln musst. In normal designten Modellen wäre es schlicht "WHERE".
Nun, das wichtigste wurde schon zuvor gesagt. Ich vermute, deine Jahrestabellen sollen so eine Art Partitionierung sein. Zumindest denke ich das, wenn ich höre "große" Tabellen. Wenn das nicht so ist und falls Du es noch nicht versucht hast, packe einfach alle Daten in eine Tabelle und nehme wie schon vorgeschlagen das Jahr als Spalte dazu.
Du kannst auch einen richigen SQL Server hinter Access klemmen und dort alle Tabellen zusammen führen.
Du kannst Abfragen programmatisch erzeugen im Moment der Nutzung dabei die Tabelle ändern.
Vielleicht kann man auch die Fähigkeit von Access nutzen, heterogene Abfragen zu machen und irgendwie mit Union Abfagen arbeiten.
 
Oben