Join über mehrere Tabellen hinweg bei MySQL

blubberblase

Mitglied
Hallo liebe Community!
Ich sitze grad auf Arbeit und verzweifel ein bisschen mit einer MySQL Abfrage für eine Internetseite. Es handelt es sich um eine Datenbank wo "Experten" zu unterschiedlichen Fachgebieten gespeichert sind.

Folgende Tabellen gibt es: experten (id, name, vorname, titel, anrede ......), experten_details (experte_id, type, bundesland, einrichtung....), experten_specialization (id, expert_id, specialization_id), specialization (id, specialization)

Es geht darum, dass ich eine Übersicht aller eingetragenen Experten erstellen möchte. Soweit funktioniert das auch schon. Mein Query lautet:

Code:
$query	 = "SELECT * FROM experten, experten_details WHERE experten.id = experten_details.experte_id

Er gibt mir also zu den normalen Angaben eines Experten auch die Daten aus der Tabelle experten_details mit aus.

Nun möchte ich aber zusätzlich noch die Spezialisierungen passend zum Experten mit ausgeben. In der experten_specialization steht die ID des Experten (expert_id) und die ID der Spezialisierung (specialization_id). In der letzten Tabelle specialization sind die Namen der Spezialisierungen samt ID gespeichert.

Nun muss das alles ja irgendwie zusammengefügt werden.

Mein Plan sah so aus:
Code:
$query	 = "SELECT * FROM experten, experten_details, specializations AS s LEFT JOIN experten_specialization AS e ON (e.specialization_id=s.ID) WHERE experten.id = experten_details.experte_id";

Aber er scheint hier durcheinander zu kommen. Muss ich mehrere Joins machen oder wie muss das aufgebaut sein?

P.S.: Die Struktur der Datenbank ist leider vorgegeben...da könnte ich nichts ändern.

Vielen Dank schon mal!
Grüße
Marcel
 
Schreibe deine SQL strukturiert auf und du siehst viel mehr...

Das folgende hast du:
SQL:
SELECT 
	* 
FROM 
	experten, 
	experten_details, 
	specializations AS s 
	LEFT JOIN experten_specialization AS e 
		ON (e.specialization_id=s.ID) 
WHERE experten.id = experten_details.experte_id

Die Kombination (experten, experten_details) ist nirgens mit der Kombination (specializations, experten_specialization) verbunden.

Du kannst
1) mehrere Joins
2) mehrere Tabellenverknüpfengen über den WHERE-Teil
3) mit Subqueries arbeiten
 
Zuletzt bearbeitet von einem Moderator:
Hallo yaslaw,
vielen Dank für deinen Tipp! Stimmt, so sieht es schon wesentlich übersichtlicher aus :)

Ich werde es noch mal mit mehreren Joins versuchen. Melde mich ob es geklappt hat oder nicht :)

Danke und Grüße
 
Zurück