• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Error 1064 - SubSelects

Puccini

Neues Mitglied
Hi, ich hab eine etwas komplizierte Verschachtelung über mehrere Tabellen und Subselects.

Auf meinem Testserver funktioniert das Sahen! Aber auf dem Produktiv-System kommt der Fehler:
Code:
[B]SQL-Befehl:[/B]     
              SHOW  KEYS  FROM      
      [B]MySQL meldet: [/B] 
  #1064 - 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 '' at line 1

Es liegt scheinbar an den Subselects, weil wenn ich die Entferne, gehts.
MySQL-Client-Version: 5.0.41 ist vorhanden...

Kennt einer das Problem und hat eine Lösung?

Danke
 
Sauber Maskieren Hilft vielleicht weiter.

SHOW `keys` FROM ....

#1064 ist meist ein Syntaxfehler (Anführungszeichen, nicht geschlossene Klammern oder ein Sonderzeichen einer Variabel die im Statement verwendet wird).

Aber einfach mal das ganze Statement posten, wär hilfreich, denk ich.
 
Zuletzt bearbeitet:
Oki, hier mal das Statement:
Code:
SELECT `player`.`ID` as PlayerID, `player`.`Name` as PlayerName, COUNT(*) AS Anzahl,
    (SELECT COUNT(*) FROM `spiele` WHERE `Sieger` = `player`.`ID`) AS Winnings, 
    ((SELECT COUNT(*) FROM `spiele` WHERE `Sieger` = `player`.`ID`)/COUNT(*)) AS WinningRate, 
    SUM((SELECT (`spiele`.`Punkte` * COUNT( `teilnehmer`.`ID` ) ) FROM `teilnehmer` WHERE `spiele` = `spiele`.`ID` AND `Sieger` = `player`.`ID`)) AS PunkteGesamt
FROM `player` LEFT JOIN `teilnehmer` ON `player`.`ID` = `teilnehmer`.`player` LEFT JOIN `spiele` ON `spiele`.`ID` = `teilnehmer`.`spiele` 
WHERE `Finished`= 1 GROUP BY `teilnehmer`.`player` 
ORDER BY Winnings DESC, WinningRate DESC, Anzahl DESC, `player`.`Name` DESC LIMIT 0,10;
Hoffe jemand sieht da noch durch XD sry... Ich habs versucht so gut wie möglich zu zerlegen in die Subselects aber die Code-Tags geben net so viel her.
 
Ehm ja, das müsste man fast nachbauen um es Prüfen zu können ;)

In meiner Testumgebung funktioniert die hier:
(Aber in jeder mySQL version kann das natürlich wieder etwas abweichen)

Code:
SELECT player.ID AS PlayerID, player.Name AS PlayerName, COUNT( * ) AS Anzahl, (

SELECT COUNT( * )
FROM spiele
WHERE Sieger = player.ID
) AS Winnings, (
(

SELECT COUNT( * )
FROM spiele
WHERE Sieger = player.ID
) / COUNT( * )
) AS WinningRate, SUM( (

SELECT (
spiele.Punkte * COUNT( teilnehmer.ID ) )
FROM teilnehmer
WHERE spiele = spiele.ID
AND Sieger = player.ID
)
) AS PunkteGesamt
FROM player
LEFT JOIN teilnehmer ON player.ID = teilnehmer.player
LEFT JOIN spiele ON spiele.ID = teilnehmer.spiele
WHERE Finished = '1'
GROUP BY teilnehmer.player
ORDER BY Winnings DESC , WinningRate DESC , Anzahl DESC , player.Name DESC;
Allerdings nur ohne das LIMIT am ende, das wollte so irgendwie nicht :)
 
Zurück
Oben