von Barlee » Mo, 18.02.2008 20:19
Hallo Eia,
Die Frage ist, ob man einen Zähler als Zusatzspalte in die Abfrage bekommt.
Also wenn von 1000 Datensätzen durch WHERE-Einschränkung 100 übgrigbleiben, soll in der Abfrage eine zusätzliche Spalte mit einem Zähler von 1 bis 100 vorhanden sein.
Ja, das geht. Betrachte einmal die Ausgangstabelle "
Tab_lfd":

- Bild_0.jpg (6.17 KiB) 1170 mal betrachtet
Folgende Abfrage selektiert Datensätze mit der PLZ zwischen 71000 und 79100 und fügt ein zusätzliche Spalte "lfd" an die Ergebnistabelle an. Wichtig ist, dass die Einschränkung "between 71000 and 79100 " auch in der Unterabfrage angewendet wird:
Code: Alles auswählen
select
"a"."ID",
"a"."KDNR",
"a"."PLZ",
"a"."lfd"
from
(
select
"ID",
"KDNR",
"PLZ",
(
select
count(KDNR) from "Tab_lfd" as "x"
where x.PLZ between 71000 and 79100
and "x"."KDNR" < "Tab_lfd"."KDNR"+1
) as "lfd"
from "Tab_lfd"
where "PLZ" between 71000 and 79100
) "a"
Das Ergebnis ist folgendes:

- Bild_1.jpg (20.17 KiB) 1170 mal betrachtet
Das Feld "KDNR" ist eindeutig, enthält aber Buchstaben (Geht das, oder muss es ein numerisches Feld sein? ... )=
Das ist unerheblich - wie auch das Beispiel zeigt. Einziges "Problem" könnte sein, dass der Zähler sich an der alphabetischen Sortierung der KDNR orientiert. Somit wird zwar korrekt die Anzahl der Ergebnisdatensätze gezählt, der Zähler kann aber "durcheinander" sein.

- Bild_2.jpg (6.43 KiB) 1170 mal betrachtet
In solchem Fall führt ein abschließendes .
zum gewünschten Ergebnis.
Hoffe, Du kommst weiter...
Gruß Barlee
Hallo Eia,
[quote]Die Frage ist, ob man einen Zähler als Zusatzspalte in die Abfrage bekommt.
Also wenn von 1000 Datensätzen durch WHERE-Einschränkung 100 übgrigbleiben, soll in der Abfrage eine zusätzliche Spalte mit einem Zähler von 1 bis 100 vorhanden sein.[/quote]
Ja, das geht. Betrachte einmal die Ausgangstabelle "[b]Tab_lfd[/b]":
[attachment=2]Bild_0.jpg[/attachment]
Folgende Abfrage selektiert Datensätze mit der PLZ zwischen 71000 und 79100 und fügt ein zusätzliche Spalte "lfd" an die Ergebnistabelle an. Wichtig ist, dass die Einschränkung "between 71000 and 79100 " auch in der Unterabfrage angewendet wird:
[code]
select
"a"."ID",
"a"."KDNR",
"a"."PLZ",
"a"."lfd"
from
(
select
"ID",
"KDNR",
"PLZ",
(
select
count(KDNR) from "Tab_lfd" as "x"
where x.PLZ between 71000 and 79100
and "x"."KDNR" < "Tab_lfd"."KDNR"+1
) as "lfd"
from "Tab_lfd"
where "PLZ" between 71000 and 79100
) "a"
[/code]
Das Ergebnis ist folgendes:
[attachment=1]Bild_1.jpg[/attachment]
[quote]Das Feld "KDNR" ist eindeutig, enthält aber Buchstaben (Geht das, oder muss es ein numerisches Feld sein? ... )=[/quote]
Das ist unerheblich - wie auch das Beispiel zeigt. Einziges "Problem" könnte sein, dass der Zähler sich an der alphabetischen Sortierung der KDNR orientiert. Somit wird zwar korrekt die Anzahl der Ergebnisdatensätze gezählt, der Zähler kann aber "durcheinander" sein.
[attachment=0]Bild_2.jpg[/attachment]In solchem Fall führt ein abschließendes .[code]order by "lfd"[/code] zum gewünschten Ergebnis.
Hoffe, Du kommst weiter...
Gruß Barlee