AGB  ·  Datenschutz  ·  Impressum  







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

Zählen in SQL

Ein Thema von CG2003 · begonnen am 3. Nov 2005 · letzter Beitrag vom 4. Nov 2005
Antwort Antwort
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#1

Zählen in SQL

  Alt 3. Nov 2005, 21:50
Datenbank: MS SQL Server • Version: 2000 • Zugriff über: Über Domäne auf Win 2003 Server SBS
Hallo, ich habe folgende Abfrage (es handelt sich um eine Ersatzteilverwaltung):

SQL-Code:
SELECT * FROM Buchungen WHERE PartDatum BETWEEN '06.10.2005AND '08.10.2005'
AND PartNr = '10193722AND PartStatus = 'Abbuchung'
So, das funktioniert soweit ganz gut, nur wie kann ich die Vorkommnisse im
Ergebnis, welches durch diese Abfrage entsteht zählen?

Also, wenn mir die SQL-Ausgabe beispielsweise 10 Ergebnisse/Vorkommnisse
anzeigt, das ich ermitteln kann, das es wirklich sind?

Ich habe gehört, das es mit dem Befehl COUNT gehen soll,
doch egal wo ich diesen Befehl in der o.a. Abfrage eingefügt habe, gab es
einen Fehler seitens meines SQL-Servers.

Ich hoffe ihr könnt mir helfen.



Viele Grüße aus Hamburg...
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Zählen in SQL

  Alt 3. Nov 2005, 22:02
Hallo.

In SQL kannst du COUNT(*) anstatt * verwenden, beim Arbeiten mit einer Query (ADO) hilft dir die Eigenschaft RowsAffected weiter.

Grüße vom marabu


PS: bei den Metadaten zu deinem thread erwarten wir bei "Zugriff über" die Angabe des Komponenten-Sets, mit dem du arbeiten möchtest...
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Zählen in SQL

  Alt 3. Nov 2005, 22:10
Super! Vielen Dank, jetzt funktioniert es!

Aber: Da mehrere Buchungen an einem Tag für die gleiche Ersatzteilnr. vorkommen, gibt es da die Möglichkeit, das Ergebnis so darzustellen, das ich in der 1. Spalte die einzelne Ersatzteilnr. habe,
und in der zweiten Spalte den errechneten/gezählten Wert? Beispielsweise in einem Grid oder TListView?
Das heißt, das in der Ausgabe nur einmal die Nummer vorkommt, aber die Abbuchungen gezählt werden und hinter
(in der nächsten Spalte) der Nummer der Wert steht???

Gibt es eigentlich eine Art Befehlsreferenz für SQL im Internet oder als eBook? Quasi kostenlos?

Bezüglich der Metadaten:
Tut mir leid, das wusste ich nicht , werde ich aber in Zukunft berücksichtigen!
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Zählen in SQL

  Alt 3. Nov 2005, 22:53
Zitat von CG2003:
Gibt es eigentlich eine Art Befehlsreferenz für SQL im Internet oder als eBook? Quasi kostenlos?
kuckst Du hier mal ...

MySQL 4.0 Doku (deutsch) als PDF

aber immer bedenken, bei SQL gibt es Basis-Funktionen und dann auch noch Dialekt, will heissen, was auf Server/Datenbank von Hersteller A funktioniert, muss nicht unbedingt bei Hersteller B auch laufen.

Beispiel:
Bei MySQL gibt es den Befehl REPLACE (genialer Befehl, der arbeitet wie ein INSERT wenn die Zeile nicht existiert (laut Primärschlüssel) und wie UPDATE wenn die Zeile schon existiert).

Oder:
Zum Lesen der ersten 100 Zeilen heisst es bei MS-SQL "SELECT TOP 100 * FROM table;" bei MySQL "SELECT * FROM table LIMIT 100;"

Aber da man beim Start in die SQL-Welt sich erst mal für ein Datenbank-System entscheided sind die Unterschiede erst mal nicht so entscheidend, allerdings die Doku sollte zu dem DB-System passen

cu
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Zählen in SQL

  Alt 4. Nov 2005, 06:28
Hallo Sebastian,

du kannst eine statistische Auswertung über die SQL Aggregat-Funktionen erstellen. Mit dem folgenden Statement erhältst du eine Übersicht der Artikelabgänge in einem bestimmten Zeitraum. Die Ausdrücke mit dem Doppelpunkt sind Parameter, die du in deinem Programm ersetzen kannst - so ist das Statement variabel einsetzbar.

SQL-Code:
SELECT PartNr, Count(*) as Anzahl, Sum(Wert) as Wert
FROM Buchungen
WHERE PartDatum BETWEEN :begin AND :end AND PartStatus = :status
GROUP BY PartNr
ORDER BY PartNr
Zum MS SQL Server 2000 gehört eine Online Dokumentation, in der du die Referenz für T-SQL findest - das ist die SQL Implementierung von MS (Sybase).

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Zählen in SQL

  Alt 4. Nov 2005, 07:51
@marabu

In allen mir bekannten DBMS führtgroup by automatisch zu einer Sortierung.
Also wäre ein zusätzlicher Aufruf vonorder by sinnlos und verschwendet nur Prozessorzeit.

Ich kenn natürlich nicht alle Systeme, also selber ausprobieren
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
ozz

Registriert seit: 26. Jun 2005
131 Beiträge
 
#7

Re: Zählen in SQL

  Alt 4. Nov 2005, 14:26
Zitat von Garby:
@marabu

In allen mir bekannten DBMS führtgroup by automatisch zu einer Sortierung.
Also wäre ein zusätzlicher Aufruf vonorder by sinnlos und verschwendet nur Prozessorzeit.

Ich kenn natürlich nicht alle Systeme, also selber ausprobieren
Ich wollte nur kurz noch eine Anmerkung machen. Eine Sortierung erfolgt bei einem group by nicht automatisch (explizit nur Oracle). Jedoch selbst wenn das so sein sollte, der SQL Optimizer sollte das dann rausfiltern, das ist dessen Job . Dieser lauft immer und verschwendet Prozessorzeit.....
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Zählen in SQL

  Alt 4. Nov 2005, 16:13
Zitat von marabu:
SQL-Code:
SELECT PartNr, Count(*) as Anzahl, Sum(Wert) as Wert
FROM Buchungen
WHERE PartDatum BETWEEN :begin AND :end AND PartStatus = :status
GROUP BY PartNr
ORDER BY PartNr
Vielen Dank für das SQL-Statement, doch eins verstehe ich nicht.
Was genau meinst Du mit "Anzahl" und was mit "Wert"???
Das sind Typen/Spalten, die ich in meiner Tabelle doch gar nicht habe...
Oder bringe ich da jetzt was durcheinander???
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Zählen in SQL

  Alt 4. Nov 2005, 16:24
Lege das bitte nicht auf die Goldwaage - ich wollte dir nur möglichst viel in einem einzigen Statement zeigen. "Anzahl" ist ja nur eine Umbenennung und wenn es "Wert" bei dir nicht gibt, dann schmeiß es einfach wieder raus. Hauptsache du hast jetzt eine Idee, wie du weiter machen kannst.

Freundliche Grüße vom marabu
  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 16:35 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