![]() |
[MySQL] Rangliste
Hallo!
Ich möchte wissen, welchen "Rang" der Datensatz der `id` x hat, wenn man nach dem feld `test` sortieren würde. also meine Tabelle:
Code:
ich will jetzt zb wissen, welchen "rang" der datensatz mit der id 12 hat, wenn man die tabelle nach test sortieren würde....
+----+------+
| id | test | +----+------+ | 1 | 34 | | 2 | 54 | | 3 | 543 | | 4 | 411 | | 5 | 154 | | 6 | 156 | | 7 | 15 | | 8 | 185 | | 9 | 10 | | 10 | 4 | | 11 | 1 | | 12 | 441 | | 13 | 171 | | 14 | 71 | | 15 | 73 | | 16 | 91 | +----+------+ in PHP ist das ja kein Problem, nur die Geschwindigkeit. Denn ich hab über 2000 Datensätze... Die Frage wäre jetzt, ob man das ganze in MySQL lösen kann..... Danke schon mal... |
Re: [MySQL] Rangliste
2k datensätze?
ist doch noch relativ wenig, das sollte doch deine mysql datenbank locker & fix schaffen... also sortierst spalte "test" ~hoffentlich laber ich jetz kein müll~ |
Re: [MySQL] Rangliste
Hat doch niemand gesagt, dass SQL das nicht schafft, oder???
Die frage ist nur WIE geht das. |
Re: [MySQL] Rangliste
"select id, test from DEINETABELLE order by test"
|
Re: [MySQL] Rangliste
Hallo faux,
wenn du das Ganze in PHP machst, kannst du dir mit einem Trick helfen, denn mit SQL geht das AFAIK nicht. Nehmen wir an deine Datensätze sind nun in einem assoziativen Array gespeichert, und zwar nach Test sortiert (siehe vorherigen Beitrag). Die Spalte 'id' speichert die Datensatz-ID ebenso für alle anderen Spalten (eben so wie du ein Array von MySQL zurückbekommst ;)) Nun lässt du gleich nach dem Query eine Schleife drüberlaufen: $indexarray = array();
Code:
Nun kannst du die Positon im array des Datensatzes mit einer bestimmten ID erfragen:
for ($i = 0; $i < count($deinarray); $i++)
{ $indexarray[$deinarray['id']] = $i; }
Code:
Wichtig: dieser Trick ist nur schneller wenn du mehr als 1 Position überprüfen musst. In dem Fall bist du gleich schnell, direkt übers array zu laufen und abzufragen. Bei mehreren Abfragen ist es so aber definitiv schneller.
$someindex = $indexarray[736];
Greetz alcaeus |
Re: [MySQL] Rangliste
verstehe ^^ ... delphiboard - php - da werden sie geholfen
|
Re: [MySQL] Rangliste
So hab ich das schon gelöst... Nur hast du bei deiner Variante vergessen, dass auch doppelte Werte von `test` vorkommen können...
Nachdem das in MySQL nicht lösbar ist (was ja die eigentliche frage (wegen der performance) war) hat sich das erübrigt.... Danke, trotzdem... @barf00s: du solltest die Fragestellung besser lesen... |
Re: [MySQL] Rangliste
schonklar ich entschuldige mich auch für meine äußerst unqualifizierte antwort, aber wenn ich das noch bemerken dürfte
in deiner "sogenannten" fragestellung kommt kein einziges fragezeichen vor ~spitzfindig~ :) |
Re: [MySQL] Rangliste
Zitat:
Zitat:
Und jetzt zickt euch bitte nicht wegen unqualifizierten Fragen/Antworten an ;) Danke Greetz alcaeus |
Re: [MySQL] Rangliste
eben.
Schau mal:
Code:
Da haben die Datensätze 1 und 5 jeweils den wert 5 in test. Also steht dann beim Datensatz 1 als "rang" 3 und beim Datensatz 5 steht als "Rang" aber 4, obwohl sie beide 3 bekommen sollten, weißt du was ich meine??
mysql> select * from test;
+----+------+ | id | test | +----+------+ | 1 | 5 | | 2 | 21 | | 3 | 10 | | 4 | 1 | | 5 | 5 | | 6 | 3 | | 7 | 51 | +----+------+ 7 rows in set (0.00 sec) mysql> select * from test order by test; +----+------+ | id | test | +----+------+ | 4 | 1 | | 6 | 3 | | 1 | 5 | | 5 | 5 | | 3 | 10 | | 2 | 21 | | 7 | 51 | +----+------+ 7 rows in set (0.00 sec) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz