Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [erledigt]Mal wieder ein Problem mit einer sql-Anweisung (https://www.delphipraxis.net/95795-%5Berledigt%5Dmal-wieder-ein-problem-mit-einer-sql-anweisung.html)

tr909 13. Jul 2007 09:35

Datenbank: ACCESS • Version: 2000 • Zugriff über: ADO

[erledigt]Mal wieder ein Problem mit einer sql-Anweisung
 
Moin. Ich bins mal wieder. Ich habe folgendes Problem. Ich habe eine Tabelle mit Rechnungs-Daten (RECHKOPF) und den Rechnungspositionen (RECHPOSI). Verknüpft habe ich diese über das Feld RECHNR. Nun will ich mir die Daten ausgeben lassen, bei denen die Summe der Rechnungspositionen vom Rechnungsbetrag im Rechkopf abweicht. Folgendes habe ich schon :

SQL-Code:
SELECT rechkopf.rechnr, rechkopf.rechnetto, sum(rechposi.preis) from rechkopf
LEFT JOIN rechposi ON rechkopf.rechnr = RECHPOSI.rechnr
Also Ausgabe bekomme ich zu jeder Rechnungsnummer den Betrag der Rechnung sowie die die Summe der Rechnungspositionen. Wenn ich aber in der WHERE-Klausel rechkopf.rechnetto <> sum(rechposi.preis) benutze, bekomme ich die meldung das eine Aggregat-Funktion nicht in einer WHERE-Klausel verwendet werden kann.
Meine Frage ist also wie ich es lösen kann.

Gruß
tr909

dataspider 13. Jul 2007 09:51

Re: Mal wieder ein Problem mit einer sql-Anweisung
 
Hi,

ich denke, das funktioniert nur über ein SubSelect:

SQL-Code:
SELECT r.rechnr
     , r.rechnetto
     , (select sum(p.preis) from RECHPOSI p where p.rechnr = r.rechnr) as SUM_PREIS
from rechkopf r where
       (select sum(p.preis) from RECHPOSI p where p.rechnr = r.rechnr) <> r.rechnetto
...so in etwa aus dem Kopf...

Frank

alzaimar 13. Jul 2007 09:58

Re: Mal wieder ein Problem mit einer sql-Anweisung
 
Mit "Having" sollte das auch funktionieren:

SQL-Code:
select rk.REchNr,
       max(rk.rechnetto) as [Summe auf der Rechnung],
       Sum (rp.preis) as [Summe der Positionen]

 from RechKopf rk
       join RechPosi rp on rk.RechNr = rp.Rechnr

group by rk.RechNr
       having max(rk.rechnetto) <> Sum (rp.preis)

tr909 13. Jul 2007 10:19

Re: Mal wieder ein Problem mit einer sql-Anweisung
 
Besten Dank. Funktioniert beides bestens. Musste die beiden Werte die verglichen werden aber noch runden, da sonst auch viele mit scheinbar gleichen Werten ausgegeben wurden.
Die Variante mit Having werd ich aber nehmen, die ist um längen schneller (2Sekunden zu 1-2 Minuten)

Gruß und Dank
tr909


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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-2025 by Thomas Breitkreuz