AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[MySQL] Rangliste

Ein Thema von faux · begonnen am 20. Mai 2005 · letzter Beitrag vom 20. Mai 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#1

[MySQL] Rangliste

  Alt 20. Mai 2005, 14:35
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:
+----+------+
| 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 |
+----+------+
ich will jetzt zb wissen, welchen "rang" der datensatz mit der id 12 hat, wenn man die tabelle nach test sortieren würde....
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...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 14:54
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~
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:01
Hat doch niemand gesagt, dass SQL das nicht schafft, oder???
Die frage ist nur WIE geht das.
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:05
"select id, test from DEINETABELLE order by test"
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#5

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:07
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:
for ($i = 0; $i < count($deinarray); $i++)
{
  $indexarray[$deinarray['id']] = $i;
}
Nun kannst du die Positon im array des Datensatzes mit einer bestimmten ID erfragen:
Code:
$someindex = $indexarray[736];
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.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#6

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:10
verstehe ^^ ... delphiboard - php - da werden sie geholfen
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:12
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...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#8

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:14
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~
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:17
Zitat von faux:
So hab ich das schon gelöst... Nur hast du bei deiner Variante vergessen, dass auch doppelte Werte von `test` vorkommen können...
Ich? Das Feld test wird bei mir (außer für die Sortierung) nicht verwendet. Gleiche Werte bei der Sortierung müssen evtl. über einen zweiten Sort-Parmeter erledigt werden (SELECT * FROM Foo ORDER BY FOO, BAR).

Zitat von barfoos:
verstehe ^^ ... delphiboard - php - da werden sie geholfen
Für gelegentliche Fragen haben wir diese Sparte, deshalb ist die Frage durchaus in Ordnung

Und jetzt zickt euch bitte nicht wegen unqualifizierten Fragen/Antworten an Danke

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: [MySQL] Rangliste

  Alt 20. Mai 2005, 15:26
eben.

Schau mal:

Code:
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)
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??
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz