Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

LEFT JOIN mit mehr als zwei Tabellen

Empfohlene Antworten

Veröffentlicht

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

Bekomme leider das Bild nicht angezeigt... kannst Du (oder ein Mod???) mal da nachschaun?

Hab mich in der URL vertan.

Hier ist das Bild:

http://www.geocities.com/mute_records/

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

Danke sieht mit den Testdaten gut aus.

Mal sehn ob es in der richtigen auch funktioniert.

DANKE nochmal

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

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

[quoteJ

Leider ein bissel lang geworden, aber ich hoffe es hilft Dir weiter.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.