dedlfix: mysql query gesucht

Beitrag lesen

Hi!

Es geht darum, dass ich 2 Spalten einer weitere Tabelle "tabelle4" einbeziehen möchte.
Würde nun zu jedem Eintrag von Tabelle2 auch ein entsprechender Eintrag in Tabelle4 existieren, wäre es einfach für mich.
Aber da das nicht der Fall ist, muss ich wohl oder über joinen und das fällt mir sehr schwer.

Du joinst bereits jetzt, verwendest dazu aber die implizite Syntax, sprich: die Tabellennamen hintereinander aufgezählt und die Verknüpfungsbedingung steckt mit in der WHERE-Klausel. Explizit (und übersichtlicher, wie die vermutlich meisten Fortgeschrittenen finden) sähe das so aus:

FROM tabelle1 b  
JOIN tabelle2 t ON b.ID = t.ID  
JOIN tabelle3 l ON b.L_ID = l.K_ID  
WHERE b.M_ID = wert AND t.spalte9 > 0

Die Verknüpfungsbedingungen stehen direkt beim JOIN, nur die Auswahl einschränkenden Bedingungen stehen im WHERE.

Und mit dieser expliziten Schreibweise kannst du auch andere JOIN-Typen als den INNER JOIN verwenden, in deinem Fall einen LEFT JOIN.

FROM tabelle1 b  
JOIN tabelle2 t ON b.ID = t.ID  
JOIN tabelle3 l ON b.L_ID = l.K_ID  
LEFT JOIN tabelle4 x ON x.ID = t.ID

Du hast nicht gesagt, welche Daten du auch dann haben möchtest, wenn es kein Pendant dafür gibt. Ich bin mal davon ausgegangen, dass die Daten der Tabelle 2 auch dann in der Ergebnismenge enthalten sein sollen, wenn es keinen Eintrag in Tabelle 4 gibt.

TabelleA LEFT JOIN TabelleB  ergibt alles aus der links stehenden Tabelle und wenn vorhanden das aus der rechts stehenden ansonsten stattdessen NULL-Werte.

Die beiden Fachartikel zum Thema aus SelftHTML habe ich immer wieder gelesen. Ein Link dahin wäre dennoch nochmal nett, ich finde sie nicht mehr.

Die verstecken sich im "Anhang" SELFHTML aktuell, dort unter SELFHTML-Artikel unter Datenbanken.

Lo!