AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [erledigt]Mal wieder ein Problem mit einer sql-Anweisung
Thema durchsuchen
Ansicht
Themen-Optionen

[erledigt]Mal wieder ein Problem mit einer sql-Anweisung

Ein Thema von tr909 · begonnen am 13. Jul 2007 · letzter Beitrag vom 13. Jul 2007
Antwort Antwort
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

[erledigt]Mal wieder ein Problem mit einer sql-Anweisung

  Alt 13. Jul 2007, 10:35
Datenbank: ACCESS • Version: 2000 • Zugriff über: ADO
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
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Mal wieder ein Problem mit einer sql-Anweisung

  Alt 13. Jul 2007, 10:51
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
Frank Reim
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Mal wieder ein Problem mit einer sql-Anweisung

  Alt 13. Jul 2007, 10:58
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)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Mal wieder ein Problem mit einer sql-Anweisung

  Alt 13. Jul 2007, 11:19
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
  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 01:30 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