n'abend,
Du hast mein Problem genau erkannt.
auch ein blindes Huhn trinkt gern mal 'nen Korn.
SELECT S.SpielerID, S.SpielerName, VZ.VereinsName, B.BewertungenFach, B.BewertungenLiga_o_Laender, B.BewertungenPaarung, B.BewertungenNote, B.BewertungenBemerkung
FROM tabelle_Spieler S, tabelle_Vereinszugehoerigkeit VZ
Das gibt hier ein Kreuzprodukt; relativ uncool. Versuche mit expliziten JOINs zu arbeiten.
Außerdem Joinst du hier eine Tabelle rein, die du in der SubQuery heranziehst. Das ist in diesem Fall unnötig.
LEFT JOIN tabelle_Bewertungen B ON (S.SpielerID = B.SpielerID)
WHERE S.SpielerID IN (
SELECT VZ.SpielerID
FROM tabelle_Vereinszugehoerigkeit VZ
Hier liegt dein Problem. Du versuchst den Alias "VZ" zwei mal zu benutzen. Das geht natürlich nicht.
WHERE VZ.VereinsID = 2 LIMIT 0, 30
Hier fehlt ein »)« am Ende.
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT VZ.SpielerID
FROM tabelle_Vereinszugehoerigkeit VZ
In der Regel kann man durch diese Hinweise zumindest erahnen wo das Problem liegt. ;)
Die obigen Erkenntnisse neu zusammengewürfelt:
SELECT
S.SpielerID,
S.SpielerName,
VZ.VereinsName,
B.BewertungenFach,
B.BewertungenLiga_o_Laender,
B.BewertungenPaarung,
B.BewertungenNote,
B.BewertungenBemerkung
FROM tabelle_Spieler S
JOIN tabelle_Vereinszugehoerigkeit VZ
ON ( VZ.SpielerID = S.SpielerID AND VZ.VereinsID = 2 )
LEFT JOIN tabelle_Bewertungen B
ON ( B.SpielerID = S.SpielerID )
LIMIT 0, 30
Bemerke, dass wir die WHERE Bedingung »VZ.VereinsID = 2« in die ON Bedingung des Joins gezogen haben. Diese Optimierung bewirkt, dass die Selektion vor dem Join passiert, also weniger Datensätze mit einander verbunden werden müssen.
weiterhin schönen abend...
Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|