MySQL : Nicht funktionierende Abfrage, eventuell wegen MySQL-Version?

shredder01

Mitglied
Hallo,

ich habe eine SELECT-Abfrage, die zwar local (MySQL-Version 5.0.18) als auch auf meinem Testserver (MySQL-Version 5.0.45), aber nicht auf dem eigentlichen Server(MySQL-Version 4.0.21), auf dem die Seite nachher liegen soll, funktioniert. Ich komme aber nicht dahinter mit welchen Teil der Abfrage dieältere MySQL-Version jetzt nicht klar kommt.
Die Abfrage lautet :
PHP:
$query2 = "SELECT * FROM newspaper WHERE DATE_FORMAT(date,'%Y%m') = (SELECT MAX(DATE_FORMAT(date,'%Y%m')) FROM newspaper)";
Und auf dem Server mit der 4er MySQL-Version bekomme ich da folgende Fehlermeldung :
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 MAX(DATE_FORMAT(date,'%Y%m')) FROM newspaper)' at line 1

Ist da vielleicht irgendein Zusammenspiel von zwei Befehlen vor Version 5 noch nicht erlaubt gewesen?

Danke schonmal im voraus.

P.S.: Aha hab' gerade gesehen, das Subqueries erst ab Version 4.1 möglich sind. Hat vielleicht jemand 'ne Idee wie ich diese Geschichte ohne Subquery lösen könnte (JOIN? aber wie? )?

P.P.S.: Ich hab jetzt mal folgendes ausprobiert :
PHP:
$query2 = "SELECT * FROM newspaper AS n1 INNER JOIN newspaper AS n2 WHERE DATE_FORMAT(n1.date,'%Y%m')= MAX(DATE_FORMAT(n2.date,'%Y%m'))";
aber da bekomme ich die Fehlermeldung
Invalid use of group function
.
Hm, dabei benutze ich doch gar kein GROUP?

P.P.S.: Ok, ich hab' jetzt herausgefunden das MAX auch zu den group functions gehört.
Ich habe das Statement dann folgendermaßen umformuliert :
PHP:
$query2 = "SELECT * FROM newspaper AS n1 INNER JOIN newspaper AS n2 WHERE DATE_FORMAT(n1.date,'%Y%m')= DATE_FORMAT(n2.date,'%Y%m') HAVING MAX(DATE_FORMAT(n2.date,'%Y%m'))";
Jetzt kommt keine Fehlermeldung mehr, aber auf dem Server mit der MySQL-Version 4.0.21 kommt dafür auch keine Ausgabe so als ob nichts in der Datenbank wäre.

Hier nochmal das komplette Testscript (ich habe bloß den echo-Teil weggelassen):
PHP:
<?php
include 'sessionhelpers.inc.php';

$query2 = "SELECT * FROM newspaper AS n1 INNER JOIN newspaper AS n2 WHERE DATE_FORMAT(n1.date,'%Y%m')= DATE_FORMAT(n2.date,'%Y%m') HAVING MAX(DATE_FORMAT(n2.date,'%Y%m'))";

$result2 = mysql_query($query2)or die(mysql_error());

while($r2 = mysql_fetch_array($result2))
{
echo ' ... ';
}
?>
Alles was innerhalb der Schleife ausgeführt/ausgegeben werden soll kommt unter Version 4.0.21 nicht, aber auf dem Server mit Version 5.0.45 macht er's.
Hat vielleicht jemand 'ne Idee?
 
Zuletzt bearbeitet:
Zurück