Reg dich nicht auf alzaimer,
ich danke dir, ich habe verstanden was Bernhard und du geschrieben hast.
Ich versuche halt gerade krampfhaft an eine Lösung zu gelangen, damit ich die Normalisierung, die durch diese Tabellenstruktur erschaffen wurde nicht wieder zunichte mache.
Ja du hast natürlich Recht, wenn du jetzt schreibst, daß Normalisierung nicht ein Gesetz ist, daß unbedingt erfüllt werden müsste.
Ich könnte natürlich auch hingehen, die Daten aus der MainTabelle und der AllgemeinenTabelle in einer SELECT-Anweisung holen, diese in eine Liste einfügen.
Danach diese Liste durchgehen und je nach Typ eine SELECT-Anweisung ausführen und die erhaltenen Daten in meine Liste hinzufügen. Dies würde heißen ich müsste sehr viele Anfragen an die Datenbank stellen.
Es gibt auf jeden Fall Wege, wie ich die Tabellen so belassen kann und trotzdem die gewünschten Daten bekomme.
Die Frage ist und bleibt, ob es wirklich keine mögliche
SQL Anweisung gibt, die diese Arbeit in einem Zuge macht. Leider kann
Access, soweit ich weiss, keine Stored Procedures, sonst könnte ich auch IF-Anweisungen einbauen und verschiedene Fälle kreieren.
Vielleicht gibt es ja doch einen eleganten Weg.
Fragen kostet nix, aufregen verkürzt das Leben.
edit:
OK, ich habe eine Entscheidung getroffen.
Ich werde mehrere SELECT-Anweisungen machen, die jeweils für einen Typen stimmen.
Im Delphi-Code werde ich die verschiedenen Typen durchgehen und die entsprechenden
SQL-Anweisungen ausführen.
Für das oben aufgeführte Beispiel würde es bedeuten, daß ich folgende Anweisungen bräuchte.
Code:
SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp1 ON MainTabelle.ID = TabelleTyp1.ID
WHERE TabelleAllgemein.ID = 1
SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp2 ON MainTabelle.ID = TabelleTyp2.ID
WHERE TabelleAllgemein.ID = 2
SELECT * FROM MainTabelle
LEFT JOIN TabelleAllgemein ON MainTabelle.ID = TabelleAllgemein.ID
LEFT JOIN TabelleTyp3 ON MainTabelle.ID = TabelleTyp3.ID
WHERE TabelleAllgemein.ID = 3
Ich habe es noch nicht gestestet, aber das sollte theoretisch funktionieren.