Ich habe die folgende mysql-Anweisung, um Top 10 Benutzerdaten plus die Daten für den angemeldeten Benutzer zurück zu holen (wenn der angemeldete Benutzer in den Top 10 ist, gibt es nur 10 Ergebnisse insgesamt, sonst gibt es 11) ...MySQL-User-Rang mit sortierten Ergebnissen
(SELECT user_id, points, amountLikes, amountComments
FROM all_scores_table
ORDER BY points desc, amountLikes desc, amountComments desc
LIMIT 0,10)
UNION
(SELECT user_id, points, amountLikes, amountComments
FROM all_scores_table
WHERE user_id = $session_user_id)
ORDER BY points desc, amountLikes desc, amountComments desc
Die all_scores_table hat genau 1 Zeile pro Benutzer. Ich versuche nun, der zweiten Abfrage Ranginformationen hinzuzufügen (z. B. wenn es 11 Zeilen gibt, möchte ich wissen, ob die Sitzungsbenutzer-ID 11 oder 468 in der Liste ist).
Ich habe eine Reihe von ähnlichen Posts gelesen, konnte aber keine Antwort finden, die für die Art und Weise, wie ich meine erste Anfrage geschrieben habe, zu gelten schien, indem geordnete Ergebnisse - z. Ich kann nicht einfach eine einfache Anzahl von Zeilen mit Punkten hinzufügen, die größer sind als mein Benutzer, denn wenn sie gerade sind, möchte ich auf mengeLikes, mengeComments verweisen, um die wahre Reihenfolge zu finden.
Ich könnte natürlich tun dies in PHP mit einer zweiten Abfrage, aber ich hoffe, dass jemand eine elegante Art und Weise bemerkt dies
Danke Tim, aber ich verstehe nicht, wie dies Rank-Informationen zurückgibt - es gibt keine zusätzlichen Spalten also wie würde ich wissen, ob der Benutzer 11. oder 468. war? – d3wannabe
@ d3wannabe Ich habe meine Antwort aktualisiert. Ich empfehle, mit Ihrer ersten Top-Ten-Abfrage zu bleiben, Ränge in Ihrem PHP-Code zuzuweisen und dann Sitzungsvariablen zu verwenden, um den Rang des aktuell angemeldeten Benutzers zu erhalten. –