Zum Inhalt springen

LEFT JOIN mit mehr als zwei Tabellen


Empfohlene Beiträge

Hizusammen,

ich hab eine Problem mit dem Verknüpfen mehrerer Tabellen über ein oder mehrere LEFT JOIN.

Angenommen ich hab folgende Tabellen:

problem.gif

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...