Fachinformatiker.Berlin Geschrieben 15. Juli 2002 Geschrieben 15. Juli 2002 Hizusammen, ich hab eine Problem mit dem Verknüpfen mehrerer Tabellen über ein oder mehrere LEFT JOIN. Angenommen ich hab folgende Tabellen: http://www.geocities.com/mute_records/problem.gif Nun soll aus der Personen-Tabelle alles ausgegeben werden, mit dem Bild aus T_Bild und dem Namen der Kasse aus T_Krankenkasse. Problem ist beides sind keine Mussfelder. Sie können also auch nur NULL sein. Bei der Verknüpfung zwei Tabellen geht das ja einfach über SELECT T_Person.Vorname, T_Person.Nachname, T_Bild.BildURL FROM T_Person LEFT JOIN T_Bild ON T_Person.BildID = T_Bild.BildID Aber wie bekomm ich jetzt noch den Namen der Kasse da rein ??? DANKE schon ma im Voraus Zitieren
Uncle Reaper Geschrieben 15. Juli 2002 Geschrieben 15. Juli 2002 Bekomme leider das Bild nicht angezeigt... kannst Du (oder ein Mod???) mal da nachschaun? Zitieren
Fachinformatiker.Berlin Geschrieben 15. Juli 2002 Autor Geschrieben 15. Juli 2002 Hab mich in der URL vertan. Hier ist das Bild: http://www.geocities.com/mute_records/ Zitieren
tauron Geschrieben 15. Juli 2002 Geschrieben 15. Juli 2002 Moin ! Probier mal ob des funzt: SELECT T_Person.PersonID, T_Person.Vorname, T_Person.Nachname, T_Krankenkasse.Kassenname, T_Bild.BildURL FROM T_Bild RIGHT JOIN (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) ON T_Bild.BildID = T_Person.BildID; hoffe das hilft Dir! gruß Christian Zitieren
Fachinformatiker.Berlin Geschrieben 15. Juli 2002 Autor Geschrieben 15. Juli 2002 Danke sieht mit den Testdaten gut aus. Mal sehn ob es in der richtigen auch funktioniert. DANKE nochmal Zitieren
Fachinformatiker.Berlin Geschrieben 15. Juli 2002 Autor Geschrieben 15. Juli 2002 Original geschrieben von tauron Moin ! Probier mal ob des funzt: SELECT T_Person.PersonID, T_Person.Vorname, T_Person.Nachname, T_Krankenkasse.Kassenname, T_Bild.BildURL FROM T_Bild RIGHT JOIN (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) ON T_Bild.BildID = T_Person.BildID; hoffe das hilft Dir! gruß Christian könntest du da eventuell mal einen theoretischen Abriss zu geben. Was man wie macht. Hab dieses Problem häufiger und nicht nur mit 2 Tabellen, sondern mit noch mehr (3-5). Um genau zu sein. Gibt es noch mehrere Tabellen, deren Primärschlüssel in der T_Person als Fremdschlüssel gespeichert worden sind und deren Daten nun über die SQL-Anweisung "ausgegeben" werden sollen. Dafür würde ich gern wissen WIE man es macht. Danke Zitieren
tauron Geschrieben 15. Juli 2002 Geschrieben 15. Juli 2002 klar, also wichtig ist ja hier nur das FROM Statement: FROM T_Bild RIGHT JOIN (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) ON T_Bild.BildID = T_Person.BildID und zwar fängt SQL bei dem innersten Ausdruck (der in der Klammer) an : (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) es wird hier eine "Menge" kreiert, die aus allen T_Person Datensätzen plus allen übereinstimmenden T_Krankenkasse Datensätzenbesteht. Dann geht er zum "nächsthöheren" Ausdruck (der die Klammer umschliesst): T_Bild RIGHT JOIN (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) ON T_Bild.BildID = T_Person.BildID und bildet eine Menge die aus allen Datensätzen auf der rechten Seite (die in der Klammer) und den übereinstimmenden T_Bild Datensätzen besteht. Nach dem Prinzip lässt sich das dann weiterführen, z.B.: SELECT T_Person.PersonID, T_Person.Vorname, T_Person.Nachname, T_Krankenkasse.Kassenname, T_Bild.BildURL, T_Bla.BlaText FROM T_Bla RIGHT JOIN (T_Bild RIGHT JOIN (T_Person LEFT JOIN T_Krankenkasse ON T_Person.KrankenkasseID = T_Krankenkasse.KrankenkasseID) ON T_Bild.BildID = T_Person.BildID) ON T_Bla.BlaID = T_Person.BlaID; wichtig ist halt das er die Klammern von innen nach aussen abarbeitet und durch das RIGHT JOIN immer die komplette Menge aus der Klammer nimmt und die neuen Daten dazuwirft. Leider ein bissel lang geworden, aber ich hoffe es hilft Dir weiter. gruß Christian Zitieren
Fachinformatiker.Berlin Geschrieben 15. Juli 2002 Autor Geschrieben 15. Juli 2002 [quoteJ Leider ein bissel lang geworden, aber ich hoffe es hilft Dir weiter. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.