Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [SQL, Paradox7]: Count anzeigen (https://www.delphipraxis.net/27764-%5Bsql-paradox7%5D-count-anzeigen.html)

Die Muhkuh 15. Aug 2004 13:48


[SQL, Paradox7]: Count anzeigen
 
Moinsen,

ich hab folgenden Befehl:

Delphi-Quellcode:
  SQL.Close;
  SQL.SQL.Clear;
  SQL.SQL.Add('SELECT Kartenname, COUNT(Kartenname) FROM Karten');
  SQL.Open;
Wie komme ich an den Count-Wert dran?

Duffy 15. Aug 2004 14:16

Re: [SQL, Paradox7]: Count anzeigen
 
Hallo Spider,
Zitat:

Zitat von Spider
Delphi-Quellcode:
  SQL.Close;
  SQL.SQL.Clear;
  SQL.SQL.Add('SELECT Kartenname, COUNT(Kartenname) FROM Karten');
  SQL.Open;

Delphi-Quellcode:
SQL.Close;
  SQL.SQL.Clear;
  SQL.SQL.Add('SELECT COUNT(Kartenname) FROM Karten');
  SQL.Open;
so ...

bye
Claus

Die Muhkuh 15. Aug 2004 14:39

Re: [SQL, Paradox7]: Count anzeigen
 
Hi Duffy,


aber wie komme ich an den Wert?

Delphi-Quellcode:
String := SQL.FieldByName('Kartenname').AsString
?

r_kerber 15. Aug 2004 14:43

Re: [SQL, Paradox7]: Count anzeigen
 
Ich vermute mal Du meinst es so:
SQL-Code:
  SQL.Close;
  SQL.SQL.Clear;
  SQL.SQL.Add('SELECT Kartenname, COUNT(Kartenname) AS Anzahl FROM Karten GROUP BY Kartenname');
  SQL.Open;
  iAnzahl := SQL.FieldByName['Anzahl'].Value;

MrSpock 15. Aug 2004 14:47

Re: [SQL, Paradox7]: Count anzeigen
 
Hi Duffy,

Paradox vergibt einen automatischen Namen für das Cout Feld, "COUNT OF Kartenname" in deinem Fall. Du kannst ihn mit der AS Klausel jedoch umbenennen.

SQL-Code:
SELECT Kartenname, COUNT(Kartenname)AS AnzahlKN FROM Karten
[edit]War Rainer wohl etwas schneller und korrekter dazu, da jedes Feld, dass (auch) als Nichtaggregatfeld benutzt wird in die GROUP Klausel muss.[/edit]

Die Muhkuh 15. Aug 2004 14:58

Re: [SQL, Paradox7]: Count anzeigen
 
Hi,

was bedeutet/macht GROUP BY und muss es in die Abfrage rein?

MrSpock 15. Aug 2004 15:05

Re: [SQL, Paradox7]: Count anzeigen
 
Hallo Spider,

die Group Klausel gruppiert die zusammengefassten Daten. Angenommen du hast eine Positionstabelle, die eine Auftragsnummer und den Betrag zur Position enthält. Schreibst du jetzt

SQL-Code:
SELECT AuftragsNr, SUM(Betrag) FROM Positionen
dann weiß SQL ja nicht, welche Auftragsnummer es anzeigen soll zur Summe aller Beträge! Also musst du schreiben:

SQL-Code:
SELECT AuftragsNr, SUM(Betrag) FROM Positionen GROUP BY AuftragNr
jetzt kann SQL die Sätze nach AuftragNr gruppieren und die Summe je Gruppe anzeigen. Deshalb müssen alle Felder, die (auch) in Nicht Zusammenfassungsfunktionen wie COUNT, SUM, etc. vorkommen in die GROUP Klausel aufgenommen werden.

Die Muhkuh 15. Aug 2004 15:08

Re: [SQL, Paradox7]: Count anzeigen
 
Hi,

:oops:. Also so richtig verstanden hab ich das irgendwie nicht. :oops:


Wie meinst du das "welche Auftragsnummer es anzeigen soll"?

grayfox 15. Aug 2004 15:18

Re: [SQL, Paradox7]: Count anzeigen
 
hallo spider!

Code:
group by
heisst 'gruppiert nach' und bereitet deine ergebnismenge nach vorgegebenen gruppen auf, dh. es werden nicht die einzelnen datensatz angezeigt.

zb: in einer tabelle, in welcher die aufträge je kunden eingetragen werden und die KundenID den fremdschlüssel bildet, würde die Query bei einer auswahl der KundenID für jeden auftrag eine zeile zurückliefern. ok?
wenn dich aber nur die anzahl der aufträge/kunden interessiert kannst du mit

(* UNTESTED *)
Delphi-Quellcode:
 SELECT KundenID, COUNT(KundenID) as Anzahl, Status FROM tblAuftraege
         GROUP BY KundenID, Status
         ORDER BY KundenID
die anzahl der kundenaufträge jedes kunden mit gleichem status (offen, abgeschlossen, storniert, etc) erhalten.
in die group_by-klausel werden alle feldnamen der abfrage aufgenommen, mit ausnahme der berechenten felder (aggregatfelder).

die anzahl bekommst du mit
Delphi-Quellcode:
Anzahl_Auftraege:= Query.FieldByName('Anzahl').asInteger
mfg, stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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