Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Rang von Datensätzen ermitteln (https://www.delphipraxis.net/152327-rang-von-datensaetzen-ermitteln.html)

ibp 18. Jun 2010 10:49

Datenbank: Interbase • Version: 6.xx • Zugriff über: BDE

Rang von Datensätzen ermitteln
 
Hallo,

gibt es eine Möglichkeit den Rang der Datensätze aus einem Select zu bekommen? Oder wie kann ich das anstellen?

Hintergrund: Ich muss eine Baustruktur in der Datenbank nach bestimmten Kriterien sortieren. Diese Sortierung soll in einem Feld gespeichert werden. Ich würde das ganze gerne mittels einem SQL-Statement erledigen. Was mir Fehlt, wie ich die Reihenfolge bestimme/erhalte.


Was ich mir vorstelle (Beispiel)...
Code:
SELECT RANK() as 'rang', spieler FROM tabelle ODER BY tore
Ergebnis:
Code:
rang spieler
1    Hans
2    Uwe
3    Fritz
...

DeddyH 18. Jun 2010 11:00

AW: Rang von Datensätzen ermitteln
 
Ohne jetzt großartig nachgedacht zu haben behaupte ich, mit einer SP müsste das gehen.

mkinzler 18. Jun 2010 11:30

AW: Rang von Datensätzen ermitteln
 
Du müsstest ein weiteres Feld anlegen. Die Datensätze haben keine eigentliche Ordnung innerhalb der Tabelle

ibp 18. Jun 2010 11:33

AW: Rang von Datensätzen ermitteln
 
Zitat:

Zitat von mkinzler (Beitrag 1029903)
Du müsstest ein weiteres Feld anlegen. Die Datensätze haben keine eigentliche Ordnung innerhalb der Tabelle

das ist nicht das Problem, ich möchte gerne den Rang in der Ergebnismenge wissen.....

mkinzler 18. Jun 2010 11:38

AW: Rang von Datensätzen ermitteln
 
Und wie wird der ermittelt?

user0815 18. Jun 2010 12:18

AW: Rang von Datensätzen ermitteln
 
RANK (Transact-SQL)

ibp 18. Jun 2010 12:24

AW: Rang von Datensätzen ermitteln
 
Zitat:

Zitat von mkinzler (Beitrag 1029906)
Und wie wird der ermittelt?

über ein select und einer order by Klausel. (Siehe ersten Post)

@user0815 ich nutze Interbase!

p80286 18. Jun 2010 15:39

AW: Rang von Datensätzen ermitteln
 
Also wenn ich das richtig verstanden habe, dann ist dieser "Rang" nichts anderes als die Satznummer in der Ergebnismenge.

Wie Detlev schon schrieb SP!

Da die Datensätze aber in ein Delphi-Programm eingebettet sind, würde ich die Nummerierung durch das Delphi-Programm erledigen lasse, das erspart Datenverkehr.

Gruß
K-H

DeddyH 18. Jun 2010 16:49

AW: Rang von Datensätzen ermitteln
 
Versuch es mal hiermit (ich bin kein großer SP-Experte, aber bei einem ersten Test sah das ganz gut aus):
SQL-Code:
SET TERM ^ ;

CREATE OR ALTER PROCEDURE Spielerranking
RETURNS (
    RANK integer,
    SPIELERNAME varchar(60),
    TORE integer)
As
BEGIN
  rank = 0;
  FOR
    SELECT Name, Tore FROM spieler
    ORDER BY Tore DESC
    INTO :spielername, :tore
    DO
      BEGIN
        rank = rank + 1;
        SUSPEND;
      END
END^

SET TERM ; ^
Das wurde zwar unter Firebird geschrieben, sollte aber unter Interbase auch funktionieren.

[edit] Sortierreihenfolge auf absteigend geändert, macht wahrscheinlich mehr Sinn :) [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 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