Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Reihenfolge behalten+ Wie erstellt man die gewünschte Abfrage





Frage

Hallo! Ich habe folgendes geplant. Ich will mehrere Tabellen erstellen. in jeder Tabelle hab ich einen Fahrplan einer bestimmten Linie. Da soll schon einmal die Reihenfolge wie bei der Eingabe behalten werden. Die Tabellen bekommen dann den Titel der jeweiligen Liniennummer. Nun will ich eine Abfrage erstellen wo alle Haltestellen alphabetisch angezeigt werden und daneben steht welche Linien an dieser Haltestelle halten und per Klick auf die Linienummer direkt zum Fahrplan zu wechseln. Wie mache ich, dass ich die automatische alphabetische Sortierung der Tabellen verhindere? Wie erstelle ich die gewünschte Abfrage durch? Ich hoffe ihr habt mein Vorhaben verstanden. Danke!

Antwort 1 von Hinki27

Hallo cyber,

das Problem der Reihenfolge, kannst du lösen, indem die einen PrimaryKey (Bsp ID) mit dem Typ Autowert auf nimmst, da die Tabelle nach dem PrimaryKey sortiert wird, wenn in einer Abfrage nicht anderes angegeben wird.
Folgst du meiner Empfehlung nicht (s.u.), so bleibt dir nur der UNION-BEfehl in einer SQL.Abrage, der Form

select "Linie1" as linie, * from Linie1
UNION select "Linie2" as linie, * from Linie2
UNION ....
... ORDER BY Haltestellenname;

Diese Abfrage müsstest du mit jeder neuen Linie anpassen, was db-technisch kein guter Stil ist.

Tipp: Überlege dir mal, ob es nicht sinnvoller ist, insgesamt drei Tabellen zu definieren
Tabelle1: Linie (ID, Linienname etc)
Tabelle2: Haltestellen (ID, Haltestellename etc.)
Tabelle3: Linienhaltestellen (ID aus 1, ID aus 2, Uhrzeit etc.)
und zwischen den Tabellen eine referenzielle Integritätsbeziehung zu definieren.
Zumindest würde ich dir empfehlen, die Fahrpläne in einer Tabelle zu speichern, indem du ein weiteres Feld für die Linie aufnimmst..

Gruß
Ralf

Antwort 2 von cyber

Danke für den Tipp den werd ich umsetzen.

Noch eine Frage: Wie erstelle ich die Abfrage, sodass eine Haltestelle die mehrmals vorkommt nur ein mal angezeigt wird und die Liniennamen welche die gleichen Haltestellen haben im gleichen Feld erscheinen? (Haltestelle/ 1,2) so würd ich das gerne haben.

Antwort 3 von Hinki27

Hallo cyber,

falls du zunächst die UNION-Version gewählt hast und ID-Felder in die Tabelle eingebaut hast. Probiere es mal mit der folgenden Pivot-Tabelle (Kreuztabelle):

TRANSFORM First(IIf(nz([ID])="","",[Linie])) AS X
SELECT AlleHaltestellen.Haltestelle
FROM AlleHaltestellen
GROUP BY AlleHaltestellen.Haltestelle
PIVOT AlleHaltestellen.Linie;

Damit erscheinen die Linien, war nicht im gleichen Feld, für einen "Überblick" ist die Abfrage aber sinnvoll. Falls du wirklich die Daten in EINEM Feld Stehen haben willst, musst du ein kleines VBA-Programm schreiben. Es hängt im wesentlichen davon ab, was du mit der Darstellung später noch anfangen willst.

Gruß
Ralf

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: