Hallo!

Das hatten wir in der letzten Woche schon.

Eine Datenbank hat keine RowID, weil sie die Daten ja in beliebiger
Reihenfolge herausgeben kann, die Zeilennummer sich also st�ndig
ver�ndert.

Wenn Du die Daten mit ADO ausliest, steht Dir rs.AbsolutePosition als
Zeilennummer zur Verf�gung, aber das willst Du ja nicht.

Wenn Du aus dem Recordset eine XML-Datei erzeugst, kannst Du die
Zeilennummer sicher mit XSL einbauen, oder?

Wenn Du Deine Abfrage aber sortierst, kannst Du einen Ranking-Wert
direkt in SQL berechnen:

Zun�chst eine View f�r die Selektions- und Sortierkriterien...

Select   *
>From     Tabelle
Where    ...
Order By ...

... und dann folgendes Konstrukt:

Select   *, (
             Select count(*)
             From   View As B
             Where A.f1 <= B.f1 ...
            )
>From     View as A

In der Unterabfrage z�hlst Du einfach die Datens�tze, deren
Sortierkriterium <= dem des aktuellen Datensatzes ist. Beim ersten
Datensatz ist das 1, beim zweiten 2, u.s.w.. Wenn Du DESCENDING statt
ASCENDING sortierst, musst Du nat�rlich mit ">=" vergleichen. Die
Where-Klausel der Unterabfrage enth�lt exakt die gleichen Spalten wie
die Order-By-Klausel der View.

Bei einem eindeutigen Sortierkriterium erh�ltst Du so wirklich
fortlaufende Zahlen. Ist das Sortierkriterium nicht eindeutig, solltest
Du in der Where-Klausel der Unterabfrage mit "<" statt "<=" arbeiten und
daf�r die Anzahl um 1 erh�hen, damit Du einen echten Ranking-Wert
erh�ltst.

Beispiel "Bundesliga"

View (Tabelle):

Select   *
>From     Teams
Order By Punkte Desc, Tordifferenz Desc, Tore Asc

Ranking:

Select   *, (
             Select Count(*)
             From   Tabelle As B
             Where  A.Punkte >= B.Punkte
                And A.Tordifferenz >= B.Tordifferenz
                And A.Tore > B.Tore
            ) + 1 As Ranking
>From     Tabelle As A
Order By Punkte Desc, Tordifferenz Desc, Tore Asc

Freundliche Gr��e
Joachim van de Bruck




| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an