Abermals: join von 2 Tabellen

StrangeThing

Mitglied
Hallo,

bisher hatte ich bei dem joinen von 2 Tabellen keine Probleme - klappte immer super. Erstmal zu den Gegebenheiten:

Tabelle Fach
Code:
id name     nummer standort beginn     ende
1  Erdkunde 5a     HH       1132873200 1132873200
2  Mathe    5b     HH       1132873200 1132873200
3  EDV      5t     RD       1132873200 1132896200

Tabelle Schueler
Code:
id name     standort schulart
1  Max      HH       Abi
2  Gerda    RD       Abi
3  Hannes   HH       Real

Tabelle link_join
Code:
id schuelerID fachID
1  1         1
2  1         2
3  2         3
4  3         1

So, wenn ich nun wissen möchte, welche Fächer der Schüler "Max" belegt hat, dann mache ich folgendermaßen:

Code:
SELECT Fach.id, Fach.name, Fach.beginn, Fach.ende, 
IF (
link_join.schuelerID IS NULL , 1, 0
) AS schonBelegt
FROM Fach
LEFT JOIN link_join ON Fach.id = link_join.fachID
AND link_join.schuelerID =1
ORDER BY name ASC

Das klappt auch hervorragend. Aber: wenn ich nun eine Liste haben möchte, welche durch folgende Kriterien entsteht, so geht dies nicht.

Kriterien: Zeige alle Schüler, welche in HH sind, Abi machen und ein Fach beginnend am X bis zum X besuchen.

Mein Query dazu sieht folgendermaßen aus:
Code:
SELECT p1.id, p1.name,p1.standort, p1.schulart, p2.name AS vname, p2.standort AS vstandort, p2.beginn, p2.ende, 
IF (
link_join.FachID IS NULL , 1, 0
) AS schonBelegt
FROM schuler AS p1, fach AS p2
LEFT JOIN link_join ON p1.id = link_join.schuelerID
AND link_join.fachID =1
WHERE p1.standort = "HH"
AND p1.schulart = "Abi"
AND p2.beginn >= "1132873200"
AND p2.ende <= "1132873200"
ORDER BY name ASC

Prinzipiell stimmt dann das Ergebnis. Aber: Er gibt mir einfach alle Möglichkeiten aus. Sprich er selektiert nicht primär erst nach den Verbindungen in der Tabelle "link_join" und schaut dann nach den Where Klauseln, sondern ignoriert die Verknüpfungen im link_join und arbeitet ohne diese elementare Einteilung.

Ich hoffe, ich konnte mich ausdrücken.

Wäre absolut klasse, wenn mir da jemand helfen könnte. Ich bin hier ehrlich am verzweifeln.
 
Hat sich erledigt. Ich habe nun ein workaround geschrieben.

Falls jemand einmal ein ähnliches Problem hat:

Abfrage zweiteilen und Ergebnisse wegspeichern. Dann wenn beide Abfragen gelaufen sind, diese Zusammenfügen und fertig ist es. Das ganze habe ich dann nicht mehr nur mit MySQL gemacht, sondern habe ein kleines PHP-Skript dafür geschrieben.
 
Zurück