![]() |
[SQL, Paradox7]: Count anzeigen
Moinsen,
ich hab folgenden Befehl:
Delphi-Quellcode:
Wie komme ich an den Count-Wert dran?
SQL.Close;
SQL.SQL.Clear; SQL.SQL.Add('SELECT Kartenname, COUNT(Kartenname) FROM Karten'); SQL.Open; |
Re: [SQL, Paradox7]: Count anzeigen
Hallo Spider,
Zitat:
Delphi-Quellcode:
so ...
SQL.Close;
SQL.SQL.Clear; SQL.SQL.Add('SELECT COUNT(Kartenname) FROM Karten'); SQL.Open; bye Claus |
Re: [SQL, Paradox7]: Count anzeigen
Hi Duffy,
aber wie komme ich an den Wert?
Delphi-Quellcode:
?
String := SQL.FieldByName('Kartenname').AsString
|
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; |
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:
[edit]War Rainer wohl etwas schneller und korrekter dazu, da jedes Feld, dass (auch) als Nichtaggregatfeld benutzt wird in die GROUP Klausel muss.[/edit]
SELECT Kartenname, COUNT(Kartenname)AS AnzahlKN FROM Karten
|
Re: [SQL, Paradox7]: Count anzeigen
Hi,
was bedeutet/macht GROUP BY und muss es in die Abfrage rein? |
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:
dann weiß SQL ja nicht, welche Auftragsnummer es anzeigen soll zur Summe aller Beträge! Also musst du schreiben:
SELECT AuftragsNr, SUM(Betrag) FROM Positionen
SQL-Code:
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.
SELECT AuftragsNr, SUM(Betrag) FROM Positionen GROUP BY AuftragNr
|
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"? |
Re: [SQL, Paradox7]: Count anzeigen
hallo spider!
Code:
heisst 'gruppiert nach' und bereitet deine ergebnismenge nach vorgegebenen gruppen auf, dh. es werden nicht die einzelnen datensatz angezeigt.
group by
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:
die anzahl der kundenaufträge jedes kunden mit gleichem status (offen, abgeschlossen, storniert, etc) erhalten.
SELECT KundenID, COUNT(KundenID) as Anzahl, Status FROM tblAuftraege
GROUP BY KundenID, Status ORDER BY KundenID in die group_by-klausel werden alle feldnamen der abfrage aufgenommen, mit ausnahme der berechenten felder (aggregatfelder). die anzahl bekommst du mit
Delphi-Quellcode:
mfg, stefan
Anzahl_Auftraege:= Query.FieldByName('Anzahl').asInteger
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr. |
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 by Thomas Breitkreuz