StrangeThing
Mitglied
Hallo,
bisher hatte ich bei dem joinen von 2 Tabellen keine Probleme - klappte immer super. Erstmal zu den Gegebenheiten:
Tabelle Fach
Tabelle Schueler
Tabelle link_join
So, wenn ich nun wissen möchte, welche Fächer der Schüler "Max" belegt hat, dann mache ich folgendermaßen:
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:
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.
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.