Seite 1 von 1

SQL Abfrage geht nicht mehr

Verfasst: 15.08.2007 10:52
von DerVorstand
Ich habe meinen Hoster gewechselt und jetzt läuft eine SQL-Abfrage nicht mehr. Leider bin ich nicht so fit darin. Die Abfrage hatte mir damals ein Bekannter zusammengestrickt. Kann mir jemand sagen wo hier das Problem sein könnte.
Die Abfrage soll eine Liste herausbringen, mit Infos über die Benutzer des Boards. Hier also die Abfrage:

Code: Alles auswählen

$sql="SELECT u.username, u.user_session_time, r.rank_title, r.rank_min, u.user_posts, s2.mymin
FROM phpbb_users u, phpbb_ranks r, (

SELECT username, max( rank_min ) mymin
FROM `phpbb_users` , phpbb_ranks
WHERE phpbb_ranks.rank_min <= phpbb_users.user_posts
GROUP BY username
)s1, (

SELECT username, min( rank_min ) mymin
FROM `phpbb_users` , phpbb_ranks
WHERE phpbb_ranks.rank_min > phpbb_users.user_posts
GROUP BY username
)s2
WHERE s1.username = s2.username
AND s1.username = u.username
AND s1.mymin = r.rank_min
AND s1.username <> 'Anonymous'
ORDER BY $order_by ";
Das Problem scheint irgendwie an dem "max(rank_min )" bzw "min( rank_min )" zu liegen. Muss man das vielleicht anders schreiben?
Für Euere Hilfe, jetzt schon mein herzlichstes DANKESCHÖN

Verfasst: 15.08.2007 11:49
von Olli Oberhausen
Versuch mal diese schreibweise....

SELECT username, MIN( rank_min ) AS mymin

Verfasst: 15.08.2007 13:17
von DerVorstand
Nein, geht leider auch nicht. Die Fehlermeldung die kommt ist übrigens:

Code: Alles auswählen

#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 'SELECT username , max( rank_min ) as mymin  FROM `phpbb_users` 
Vielleicht kann ja jemand was damit anfangen :(

Verfasst: 15.08.2007 14:39
von Olli Oberhausen
Dann schreib mal bitte MIN MAX und AS groß!

Vielleicht hilfts....

Olli

Verfasst: 16.08.2007 01:05
von Pyramide
Und wenn das nicht hilft mal bunte kringel drum und befrage die Glaskugel :roll: . Im Ernst: Groß- und Kleinschreibung ist bei SQL bis auf wenige Ausnahmen egal, so daß deine Raterei da nicht viel weiterhilft.

Wenn man sich die Fehlermeldung anguckt, sieht man daß nicht das min/max, sondern das SELECT bemängelt wird. Das deutet darauf hin, daß die verwendete MySQL-Version keine Subqueries unterstützt. Und da der Fehler erst seit dem Hosterwechsel auftritt, nutzt der neue Hoster wohl eine ältere MySQL-Version als der vorige.

Lösung: Hoster anschreiben und zum Update von MySQL auffordern. Die letzte MySQL-Version, die noch keine Subqueries unterstüzte (4.0) ist nämlich bereits viereinhalb Jahre alt und wird seit fast einem Jahr nicht mehr von mysql.com unterstüzt.

Verfasst: 16.08.2007 18:10
von DerVorstand
Heißt das jetzt im Klartext, das ich aktuell eine mySQL Version 4.0 nutze und bräuchte aber eine Version 5.0?

Verfasst: 16.08.2007 21:02
von gn#36
Im Prinzip schon.

Verfasst: 17.08.2007 00:10
von Pyramide
Du könntest das Script natürlich auch so umschreiben, daß keine Subqueries verwendet werden. Aber da MySQL 4.0 wie gesagt schon seit September 2006 nicht mehr unterstützt wird, ist ein Update dringend anzuraten - denn wenn in MySQL 4.0 Sicherheitslücken gefunden werden, bist du denen schutzlos ausgeliefert, weil es keine Bugfixes mehr geben wird.

Verfasst: 27.08.2007 08:24
von DerVorstand
Habe jetzt umgestellt auf MySQL 5 und siehe da, es funktioniert wieder alles :grin: Vielen Dank nochmal für den Tipp.