Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select Frage zu Count(*) (https://www.delphipraxis.net/202868-select-frage-zu-count-%2A.html)

Trafel21 17. Dez 2019 12:44

AW: Select Frage zu Count(*)
 
Zitat:

Zitat von hoika (Beitrag 1453610)
Hallo,
Zitat:

Wäre es auch möglich einfach das Suspend zu zählen?
Ja, lokale Variable definieren

Counter=0;
For Select Into do
begin
Counter=Counter+1;
Suspend;
end;

Dann bekommst Du sowas wie
1 Halle
2 Berlin

Aber ohne mal eine klare Ausgabe, was konkret Du dir wünschst, sage ich nichts mehr ;)

Ich wollte nur wissen wieviele Daten an Zeilen ausgegeben werden von der Procedure. Ich hatte den Counter davor schon drin,
hat nur nicht funktioniert, weil ich nicht bedacht hatte denn letzten Eintrack zu lokalisieren. Dataset.last und es funktioniert jetzt.

Rainbow6 17. Dez 2019 12:49

AW: Select Frage zu Count(*)
 
Hi,

also wenn ich es richtig sehe, dann versteht Firebird auch Window-Functions.

Wenn das so ist, dann sollte dir dieser SELECT das passende liefern:
Code:
SELECT
   COUNT(*) OVER() AS Anzahl,
   Name,
   City
FROM
   Employee
GROUP BY
   Name, City
Hab jetzt keinen Firebird da, aber im SQL-Server klappt das. Und Anzahl ist dann in jeder Zeile die Gesamt-Anzahl der Zeilen in der Tabelle - nicht die Anzahl der Zeilen in der GROUP BY Gruppe.

Und das ist wirklich das einfachste was man mit Window-Functions machen kann. Jeder der SQL verwendet sollte sich unbedingt auf der Website von Markus Winand (https://modern-sql.com/) umsehen - es gibt so viel mehr als SQL-92. Und jeder Self-JOIN auf diesem Planeten ist ein Self-JOIN zu viel.

HTH und Grüße
Daniel

hoika 17. Dez 2019 12:55

AW: Select Frage zu Count(*)
 
Hallo,
Zitat:

das es ja nur im letzten Datensatz steht.
Wenn du den Counter als Variable (also keine lokale Variable) übergibst, steht der Counter in jeder Zeile.

for select
Counter=1
Counter=Counter+1;

Counter an aufrufendes Select übergeben
Suspend;
end; // for select


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 Uhr.
Seite 2 von 2     12   

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