Autor Beitrag
motion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: Sa 26.01.08 16:22 
Ich brauche in der Ergebnismenge eines Selects, als erste Spalte eine Zeilennummerierung, also 1...rowcount.

Wie läßt sich sowas am einfachsten und besten realisieren?
ausblenden SQL-Anweisung
1:
Select "Nr",* from tabelle where option=1					


und die Funktion "Nr" sollte den aufsteigenden Integer ergeben.
icho2099
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 101
Erhaltene Danke: 12

WIN XP, WIN 7, WIN 10
Delphi 6 Prof, Delphi 2005, FPC
BeitragVerfasst: Sa 26.01.08 19:57 
soweit ich SQL kenne, geht das nicht.
SELECT liefert nur die Spalten, nach denen du fragst.
Und du kannst nur nach Spalten fragen, die in der/den Tabellen enthalten sind.

Mit einer Delphi Komponente, die das Select ausführt und zusätzlich noch
eine eigene, kalkulierte Spalte hat, könntest du das evtl. erreichen.

OnCalcFields erstellen

FieldByName(myCalcField).AsInteger := Zeilenzähler;
Inc(Zeilenzähler)

Zeilenzähler auf Null setzen,

SELECT ausführen.

Aber: wenn du dann in der Ergebnismenge navigieren willst, musst du immer
bei FIRST anfangen und vorher Zeilenzähler auf NULL setzen.
Und nur vorwärts navigieren.
motion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: So 27.01.08 00:23 
Hallo,
leider muss der SQL direkt auf dem Server laufen (in einem Webshop); keine Möglichkeit das mit Delphi Code anzureichern.

Aber ich habe nach einiger Recherche diese Möglichkeit für MySql gefunden:
ausblenden SQL-Anweisung
1:
2:
3:
4:
set @cnt:=0;
select
@cnt:=(@cnt+1),a.*
from db.artikel a;


Funktioniert ganz gut ...