Wie behandelt man Verbindungen, wenn das Ranking eine mysql-Abfrage ergibt? Ich habe die Tabellennamen und Spalten in diesem Beispiel vereinfacht, aber es sollte mein Problem veranschaulichen:Wie gehe ich mit Schlüssen um, wenn ich die Ergebnisse in MySQL bewerte?
SET @rank=0;
SELECT student_names.students,
@rank := @rank +1 AS rank,
scores.grades
FROM student_names
LEFT JOIN scores ON student_names.students = scores.students
ORDER BY scores.grades DESC
So vorstellen, die die obige Abfrage erzeugt:
Students Rank Grades
=======================
Al 1 90
Amy 2 90
George 3 78
Bob 4 73
Mary 5 NULL
William 6 NULL
Obwohl Al und Amy haben die gleiche Klasse, einer ist höher als der andere. Amy wurde abgerissen. Wie kann ich es so machen, dass Amy und Al die gleiche Rangfolge haben, so dass sie beide den Rang 1 haben. Auch William und Mary haben den Test nicht gemacht. Sie nahmen Unterricht und rauchten im Zimmer des Jungen. Sie sollten für den letzten Platz gebunden sein.
Das sollte korrekt Ranking sein:
Students Rank Grades
========================
Al 1 90
Amy 1 90
George 2 78
Bob 3 73
Mary 4 NULL
William 4 NULL
Wenn jemand einen Rat hat, lassen Sie es mich wissen.
Hallo OMG Ponys, Sie sind der MySQL Terminator !! Super, vielen Dank für die Hilfe. Ich hätte es nie herausgefunden. (Mein SQL-Wissen ist grundlegend, also muss ich Ihre Antwort studieren, um es besser zu verstehen). Auch ich liebe deinen Bildschirmnamen. Nochmals, DANKE !!! -Laxmidi – Laxmidi
"Sie können eine Kreuzverbindung (in MySQL, ein INNER JOIN ohne irgendwelche Kriterien) verwenden, um eine Variable zu deklarieren und zu verwenden, ohne eine separate SET-Anweisung zu verwenden." Verdammt, ich hatte keine Ahnung, dass Sie das tun könnten. +1 – heisenberg
Ich würde dies wieder wählen, wenn ich könnte. Spektakulär. – duffymo