Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Count Befehl will nicht so richtig ! (https://www.delphipraxis.net/110884-sql-count-befehl-will-nicht-so-richtig.html)

nachtstreuner60 26. Mär 2008 10:19

Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos

SQL Count Befehl will nicht so richtig !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Spezialisten,

ich bräuchte mal wieder eure Hilfe.

Ich habe einen Datenbankabfrage per SQL.
Delphi-Quellcode:
with zConnLinie do begin
  ZConnLinie.Connect;
  zroLinie.Active := false;
  dSQL := 'Select LIEFADRESSE , count(satzid) as Anzahl from BESTELL '+
   'where Anzahl > 10 Group by LIEFADRESSE';
  zroLinie.SQL.Text := dSQL;
  zroLinie.ExecSQL;
  zroLinie.Active :=true;

end;
Nach Ausführung erhalte ich folgende Fehlermeldung siehe Anhang !

Ich möchte nach der Gruppierung der Datensätze, nur die Gruppen angezeigt bekommen, deren Anzahl > 10 ist.

Ich hoffe auf eure Hilfe. Besten Dank schonmal

Gruß nachtstreuner60

mkinzler 26. Mär 2008 10:21

Re: SQL Count Befehl will nicht so richtig !
 
Versuch mal
SQL-Code:
Select
    LIEFADRESSE , count(satzid) as Anzahl
from
    BESTELL  
where
    count(satzid) > 10 
Group by
    LIEFADRESSE;

Bernhard Geyer 26. Mär 2008 10:22

Re: SQL Count Befehl will nicht so richtig !
 
SQL-Code:
where Anzahl > 10
muß nach hinten als having

SQL-Code:
Select LIEFADRESSE , count(satzid) as Anzahl from BESTELL Group by LIEFADRESSE having Anzahl > 10';
da hier erst die Gruppierung wirken muß und die wehere-Bedingung vor der Gruppierung wirkt.

nachtstreuner60 26. Mär 2008 10:32

Re: SQL Count Befehl will nicht so richtig !
 
Hallo mKinzler, hallo Bernhard

beide vorgeschlagenen Lösungen funktionieren nicht.

Nach ein bisschen probieren bin ich dann auf diese Lösung gestossen, die
funktioniert.

Delphi-Quellcode:
with zConnLinie do begin
  ZConnLinie.Connect;
  zroLinie.Active := false;
  dSQL := 'Select LIEFADRESSE , count(satzid) as Anzahl from BESTELL '+
   ' Group by LIEFADRESSE having count(satzid) > 10';
  zroLinie.SQL.Text := dSQL;
  zroLinie.ExecSQL;
  zroLinie.Active :=true;

end;
Trotzdem besten Dank für eure Mühe

Einen schönen Tag noch

Bernhard Geyer 26. Mär 2008 10:50

Re: SQL Count Befehl will nicht so richtig !
 
Zitat:

Zitat von nachtstreuner60
Nach ein bisschen probieren bin ich dann auf diese Lösung gestossen, die
funktioniert.

Könnte sein das Firebird im Having-Teil mit den Alias-namen noch nichts anfangen kann.

omata 26. Mär 2008 11:03

Re: SQL Count Befehl will nicht so richtig !
 
Dann versuch doch...

SQL-Code:
SELECT liefadresse, COUNT(satzid) AS anzahl
FROM bestell
GROUP BY liefadresse
HAVING COUNT(satzid) > 10
Gruss
Thorsten

mkinzler 26. Mär 2008 11:22

Re: SQL Count Befehl will nicht so richtig !
 
Zitat:

Könnte sein das Firebird im Having-Teil mit den Alias-namen noch nichts anfangen kann.
Geht erst ab FB2


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