Unmögliche SQL-ANfrage ?!
-
Welchen Fehler bekommst du denn? Wo tritt der Fehler auf? Ich hab hier keine Tabellen zum Testen.
MfG SideWinder
-
umgehen wir das subselect doch ganz elegant mit 2 queries:
select @score:=score from table where id=10000
select count(*) from table where score>@score
-
Finde ich imho weniger elegant
BTW: Was genau ist an meinem Query jetzt falsch? Würde mich interessieren. Außer count/anz, etc.
MfG SideWinder
-
SideWinder schrieb:
BTW: Was genau ist an meinem Query jetzt falsch? Würde mich interessieren. Außer count/anz, etc.
ka, ich meide Subselects momentan noch, mal sehen wie gut die nächsten MySQL Versionen optimieren - hatte nämlich ein paar Performance Probleme mit Subselects -> deshalb nehme ich lieber 2 kleine Queries -> da kann er nix falsch machen
-
Also mit "@" kann ich in meinem Query mit Variablen arbeiten ??
Oder was wird damit gemacht ?
-
funtzt wieder nicht
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 COUNT(*) FROM mlc_members WHERE points>@points' at line
$id=1; $sql_query = "SELECT id,@points:=points FROM mlc_members WHERE id=$id "; $sql_query .= "SELECT COUNT(*) FROM mlc_members WHERE points>@points "; $qre = $g_cMysql->Query( $sql_query ); echo mysql_error();
-
@JayJay redest du von SQL oder von mySQL?
Bei mySQL sind doch garkeine Subselect zulässig oder haben die
das seit version 4 geändert?
-
Hier nochmal die 2 Querys:
SELECT points FROM mlc_members WHERE id='$id'
SELECT count(id)+1 as getrang FROM mlc_members WHERE points>'$points' ORDER BY points DESC
Sorry für das 2. posting, falscher Button.
-
Hi,
sry dachte, dass Mysql - SQL soweit im Query gleich sind..
@2oopuls:
Gibt es dafür nicht in einem Query ?
-
@JayJay, die Syntax von sql und mysql ist schon verschieden.
Mir ist noch eine Möglichkeit eingefallen. Du kannst es versuchen,
wenn du einen join auf ein und die selbe Tabelle machst.SELECT t1.points, count(t2.points)+1 AS rang FROM mlc_members AS t1, mlc_members AS t2 WHERE t1.id='$id' AND t2.points>t1.points GROUP BY t1.id ORDER BY t2.points
Ich hab das grad mal getestet, bei mir funktioniert es. Jetzt übergibst
du nur die $id und als ausgabe erhälst du die punkte und den rang des
Users.Gruss Frank
Edit:
Das GROUP BY wäre zwar nicht erforderlich, da die User sowieso eine
eindeutige id haben aber mySQL verlangt ein GROUP um den COUNT auszuführen.