AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL, Paradox7]: Count anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL, Paradox7]: Count anzeigen

Ein Thema von Die Muhkuh · begonnen am 15. Aug 2004 · letzter Beitrag vom 15. Aug 2004
Antwort Antwort
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#1

[SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 14:48
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?
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#2

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 15:16
Hallo Spider,
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
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 15:39
Hi Duffy,


aber wie komme ich an den Wert?

String := SQL.FieldByName('Kartenname').AsString ?
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#4

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 15:43
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;
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#5

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 15:47
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.

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]
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 15:58
Hi,

was bedeutet/macht GROUP BY und muss es in die Abfrage rein?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#7

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 16:05
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

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:

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.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 16:08
Hi,

. Also so richtig verstanden hab ich das irgendwie nicht.


Wie meinst du das "welche Auftragsnummer es anzeigen soll"?
  Mit Zitat antworten Zitat
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#9

Re: [SQL, Paradox7]: Count anzeigen

  Alt 15. Aug 2004, 16:18
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
Anzahl_Auftraege:= Query.FieldByName('Anzahl').asInteger mfg, stefan
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:15 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