AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Rang von Datensätzen ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Rang von Datensätzen ermitteln

Ein Thema von ibp · begonnen am 18. Jun 2010 · letzter Beitrag vom 18. Jun 2010
Antwort Antwort
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 10:49
Datenbank: Interbase • Version: 6.xx • Zugriff über: BDE
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
...

Geändert von ibp (18. Jun 2010 um 11:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 11:00
Ohne jetzt großartig nachgedacht zu haben behaupte ich, mit einer SP müsste das gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 11:30
Du müsstest ein weiteres Feld anlegen. Die Datensätze haben keine eigentliche Ordnung innerhalb der Tabelle
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 11:33
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.....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 11:38
Und wie wird der ermittelt?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 12:18
RANK (Transact-SQL)
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#7

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 12:24
Und wie wird der ermittelt?
über ein select und einer order by Klausel. (Siehe ersten Post)

@user0815 ich nutze Interbase!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 15:39
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Rang von Datensätzen ermitteln

  Alt 18. Jun 2010, 16:49
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (18. Jun 2010 um 17:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:58 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