Unmögliche SQL-ANfrage ?!



  • Welchen Fehler bekommst du denn? Wo tritt der Fehler auf? Ich hab hier keine Tabellen zum Testen.

    MfG SideWinder


  • Mod

    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


  • Mod

    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.


Anmelden zum Antworten