AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Select Frage zu Count(*)

Ein Thema von Trafel21 · begonnen am 17. Dez 2019 · letzter Beitrag vom 17. Dez 2019
Antwort Antwort
Seite 2 von 2     12   
Trafel21

Registriert seit: 16. Nov 2018
69 Beiträge
 
#11

AW: Select Frage zu Count(*)

  Alt 17. Dez 2019, 12:44
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.
  Mit Zitat antworten Zitat
Rainbow6

Registriert seit: 21. Mai 2019
20 Beiträge
 
#12

AW: Select Frage zu Count(*)

  Alt 17. Dez 2019, 12:49
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
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Select Frage zu Count(*)

  Alt 17. Dez 2019, 12:55
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
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:10 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