Einzelnen Beitrag anzeigen

Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#11

Re: "Bedingte" Abfrage über mehrere Tabellen

  Alt 23. Apr 2008, 10:36
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.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat