Hallo Fabian,
Meine Datenbank besteht aus drei Tabellen.
Tabelle_A Tabelle_B Tabelle_C
-stellen_id -stellen_id -ordner_id
-text1 -ordner_id -unternehmen_id
Ich würde gern alle Spalten der Tabelle A ausgeben, wenn in Tabelle_C $ordner_id = ordner_id AND $unternehmen_id = unternehmen_id
und verschachtelten WHERE Bedingungen:
$sql = "SELECT text1, text2 FROM Tabelle_A
WHERE (
Tabelle_C.unternehmen_id ='$unternehmen_id'
AND Tabelle_C.ordner_id ='$ordner_id'
AND Tabelle_B.ordner_id = Tabelle_C.ordner_id
AND Tabelle_A.stellen_id = Tabelle_B.stellen_id)";
Ob deine JOIN-Klausel korrekt verschachtelt ist kann ich leider nicht sehen, aber deine WHERE-Klausel enthält zuviele Bedingungen. Die letzten beiden Bedingungen sind durch die JOIN-Klausel bereits erfüllt.
So sollte es gehen:
SELECT Tabelle_A.*
FROM Tabelle_C INNER JOIN (Tabelle_A INNER JOIN Tabelle_B ON Tabelle_A.stellen_id = Tabelle_B.stellen_id) ON Tabelle_C.ordner_id = Tabelle_B.ordner_id
WHERE (((Tabelle_B.unternehmen_id)='$unternehmen_id') AND ((Tabelle_C.ordner_id)='$ordner_id'));
Achte auf die korrekte Verschachtelung der JOINS in den Klammern von innen nach außen (Tabellen von rechts nach links).
Noch eine Tip: Der Übersichtlichkeit wegen solltest du die verknüpften Felder zweier Tabellen nicht gleich benennen. Also nicht "tabellen_b.ordner_id -> tabellen_c.ordner_id" sondern besser "tabellen_b.ordner_id -> tabellen_c.ordner_rel" damit sind die Felder auch unterscheidber ohne Tabellenangabe und die Richtung der Beziehung wird klar.
Gruß
Paul