Moin!
Ich krieg bei Komplexeren Mysql Querys immer so probleme und hoffe mal ihr findet das Problem =D
Hier der QuerySELECT `Stufe`.`Stufe`, `Mitglieder`.*
FROM `Mitglieder`
LEFT JOIN (`Stufe_Mitglieder`,`Stufe`) ON `Stufe_Mitglieder`.`Person_id` = `Mitglieder`.`ID`
AND
`Stufe_Mitglieder`.`Person_id` = `Stufe`.`ID`
Vor allem das letzte AND bis ID ist der Haken. Ich würde gerne Stufe_Mitglieder
.Person_id
und Mitglieder
.ID
verknüpfen. Das ist ja mit Left Join kein Problem da Mitglieder schon die „Haupt-Tabelle“ ist. Jetzt kriege ich ja über die Tabelle Stufe_Mitglieder
die Spalte Stufe_id
, welche sich wiederum auf Stufe
.ID
bezieht. Und in dieser Tabelle Stufe
will ich dann die Spalte Stufe
haben. Wie komme ich daran?
Uuund fertig =D
Lösung Select in einem Select =D
SELECT (SELECT `Stufe`.`Stufe` FROM `Stufe` WHERE
`Stufe_Mitglieder`.`Stufe_id` = `Stufe`.`ID`) AS `Stufe`, `Mitglieder`.*
FROM `Mitglieder`
LEFT JOIN `Stufe_Mitglieder` ON `Stufe_Mitglieder`.`Person_id` = `Mitglieder`.`ID`
Das sollte auch ohne subselect gehen.
Du kannst mehrere Joins verknüpfen. Ohne konkrete Struktur und nur nach deiner Beschreibung ist es aber schwer die Abfrage zu erstellen.
In etwa könnte die so aussehen:
SELECT *
FROM `Mitglieder`
LEFT JOIN `Stufe_Mitglieder` USING(id) -- wenn ich dich richtig verstanden habe
LEFT JOIN `Stufe` ON`Stufe_Mitglieder`.`Person_id` = `Stufe`.`ID`
Wobei ich nich sicher bin ob der letzte join stimmt, da Stufe.ID und Stufe_Mitglieder.Person_id vermutlich nicht die gleichen ID’s sind.
Bin nicht der MySQL-Spezialist aber funz das nicht auch so?
[CODE][FONT=monospace][FONT=Tahoma]
[/FONT][/FONT]SELECT
Stufe.Stufe, Mitglieder.*[FONT=monospace]
[/FONT]FROM
Mitglieder, [FONT=monospace][/FONT]Stufe_Mitglieder, Stufe[FONT=monospace][FONT=Tahoma]
[/FONT][/FONT]WHERE[FONT=monospace]
[/FONT]Stufe_Mitglieder.Person_id=Mitglieder.ID[FONT=monospace][/FONT]
AND
Stufe_Mitglieder.Person_id=Stufe.ID
[/CODE]