Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln ? (https://www.delphipraxis.net/76317-anzahl-der-ergebnis-zeilen-einer-query-per-sql-ermitteln.html)

FrankBKK 2. Sep 2006 09:32

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

Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln ?
 
Ich steh etwas auf dem Schlauch, das sollte eigentlich kein grosses Problem sein aber ich komm einfach nicht drauf:

Wie kann ich (per SQL) die Anzahl der Zeilen ermitteln, die mir diese / oder jede andere query liefert ?
(Ich brauche den Wert in einer stored procedure)

SELECT
AUTO_ID_CUSTOMER
, SUM(UNIT_QTY*UNIT_PRICE)
FROM V_TRANSACTIONS
WHERE INV_DATE > '01/01/2006'
GROUP BY AUTO_ID_CUSTOMER
HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000

Hansi 2. Sep 2006 09:37

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Mit Query1.SQL.RecordCount bekommst du einen Integerwert der die Anzahl der Datenreihen angibt.

Hilft dir das?

Thanatos81 2. Sep 2006 09:39

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Die Anzahl der Zeilen zu der Query
SQL-Code:
SELECT
AUTO_ID_CUSTOMER
, SUM(UNIT_QTY*UNIT_PRICE)
FROM V_TRANSACTIONS
WHERE INV_DATE > '01/01/2006'
GROUP BY AUTO_ID_CUSTOMER
HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000
bekommst du per:
SQL-Code:
SELECT
COUNT(*)
FROM V_TRANSACTIONS
WHERE INV_DATE > '01/01/2006'
GROUP BY AUTO_ID_CUSTOMER
HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000
Hoffentlich hab ich dich richtig verstnaden und das ist wirklich was du suchst ;-)

/edit Auha... Oder natürlich einfach so wie Hansi es schreibt... man sollte nicht immer gleich an SQL sondern auch mal an die Zugriffsobjekte denken ;-)

FrankBKK 2. Sep 2006 09:48

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Zitat:

Zitat von Thanatos81
Die Anzahl der Zeilen zu der Query
bekommst du per:
SQL-Code:
SELECT
COUNT(*)
FROM V_TRANSACTIONS
WHERE INV_DATE > '01/01/2006'
GROUP BY AUTO_ID_CUSTOMER
HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000
Hoffentlich hab ich dich richtig verstnaden und das ist wirklich was du suchst ;-)

Nee, das klappt leider nicht, da bekomm ich nur die Counts der
einzelnen Gruppen, aber nicht eine einzelne Summe ...

Zitat:

Zitat von Thanatos81
/edit Auha... Oder natürlich einfach so wie Hansi es schreibt... man sollte nicht immer gleich an SQL sondern auch mal an die Zugriffsobjekte denken ;-)

Ja, aber die Query ist Teil einer StoredProcedure und den Wert brauch ich
danach. Wenn ich das ueber die Komponenten mache brauch ich zwei SP
und dann wirds ziemlich lahm weil ich die wechselweise aufrufen muss.

Dirk_B 2. Sep 2006 10:48

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Hallo,

nur eine Idee, nicht getestet!

Erzeuge am Anfang Deiner SP einen Generator, Counter, Sequenz oder wie immer das bei FB heißt.

Rufe diesen Generator in Deinem Select auf. Am Ende sollte der Counter die Anzahl der DS enthalten.

Falls es funktioniert (und Zeitverhalten aktzeptabel), bitte kurze Info. Habe in ca. 4 Wochen ähnliches Problem.

Mfg

DB

Thanatos81 2. Sep 2006 11:28

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Zitat:

Zitat von FrankBKK
Zitat:

Zitat von Thanatos81
Die Anzahl der Zeilen zu der Query
bekommst du per:
SQL-Code:
SELECT
COUNT(*)
FROM V_TRANSACTIONS
WHERE INV_DATE > '01/01/2006'
GROUP BY AUTO_ID_CUSTOMER
HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000
Hoffentlich hab ich dich richtig verstnaden und das ist wirklich was du suchst ;-)

Nee, das klappt leider nicht, da bekomm ich nur die Counts der
einzelnen Gruppen, aber nicht eine einzelne Summe ...

Ach klar, das kommt davon wenn man einfach mal so drauf lostippt :D Versuchs doch mal mit
SQL-Code:
SELECT COUNT(*) FROM
(SELECT
 AUTO_ID_CUSTOMER,
 SUM(UNIT_QTY*UNIT_PRICE)
 FROM V_TRANSACTIONS
 WHERE INV_DATE > '01/01/2006'
 GROUP BY AUTO_ID_CUSTOMER
 HAVING SUM(UNIT_QTY*UNIT_PRICE) < 100000)
Zitat:

Zitat von FrankBKK
Zitat:

Zitat von Thanatos81
/edit Auha... Oder natürlich einfach so wie Hansi es schreibt... man sollte nicht immer gleich an SQL sondern auch mal an die Zugriffsobjekte denken ;-)

Ja, aber die Query ist Teil einer StoredProcedure und den Wert brauch ich
danach. Wenn ich das ueber die Komponenten mache brauch ich zwei SP
und dann wirds ziemlich lahm weil ich die wechselweise aufrufen muss.

Dann klingt natürlich Dirk_Bs Alternative sehr verlockend ;-)

omata 2. Sep 2006 13:09

Re: Anzahl der Ergebnis-Zeilen einer Query per SQL ermitteln
 
Hallo FrankBKK,

oder alles in einer Abfrage...

SQL-Code:
SELECT auto_id_customer, SUM(unit_qty * unit_price) summe,
       (SELECT COUNT(*)
        FROM (SELECT auto_id_customer
              FROM v_transactions
              WHERE inv_date > '01/01/2006'
              GROUP BY auto_id_customer
              HAVING SUM(unit_qty * unit_price) < 100000) x) zeilen
FROM v_transactions
WHERE inv_date > '01/01/2006'
GROUP BY auto_id_customer
HAVING SUM(unit_qty * unit_price) < 100000
Gruss
Thorsten


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