Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi abfrage aufteilen (https://www.delphipraxis.net/91393-abfrage-aufteilen.html)

clock50 4. Mai 2007 10:30

Datenbank: mysql • Version: 4 • Zugriff über: zeos

abfrage aufteilen
 
Hallo alle zusammen, ich habe hier ein etwas 'na ja' Problem.

Ich habe eine Abfrage 2 Tabellen in einer Tabelle 'Rechnungen' sind (ReNr, Datum, Betrag, usw) in der Anderen 'Daten' sind die Positionen (ReNr, Anzahl, ArtPreis, Mwst, usw) nun habe ich zur Auswertung vor, die MwSt jeder Rechnung (nach 7% und 19%) vom 01.04.2007 - 30.04.2007 aufzulisten. !!Erklärung: in der Tabelle 'Daten.MwSt' ist nicht der Betrag sondern der MwSt-Satz also 7 o. 19. Nun wie jetzt? :wall:
SQL-Code:
SELECT RechNr AS RechNr, Datum AS Datum, ReBetrag AS ReBetrag, Sum( ( daten.Anzahl * daten.ArtPreis * ( ( daten.MwSt +100 ) /100  ) ) - ( daten.Anzahl * daten.ArtPreis ) ) AS SumMwSt7
FROM Rechnung, daten
WHERE ( ( Rechnung.Datum >= '01.04.2007' ) AND ( Rechnung.Datum <= '30.04.2007' ) )
Ich weiß nicht weiter!!!

mkinzler 4. Mai 2007 10:44

Re: abfrage aufteilen
 
Wenn ich dich richtig verstanden habe:

SQL-Code:
SELECT
    r.ReNr AS RechNr, r.Datum AS Datum,
    Sum( d.Anzahl * d.ArtPreis) as ReBetrag,
    Sum( IIF( d.MwSt = 7, d.Anzahl * d.ArtPreis * (d.MwSt/100 ), 0)) AS SumMwSt7,
    Sum( IIF( d.MwSt = 19, d.Anzahl * d.ArtPreis * (d.MwSt/100 ), 0)) AS SumMwSt19
FROM
    Rechnung r join Daten d on d.ReNr = r.ReNr
WHERE
    r.Datum between '01.04.2007' and '30.04.2007'
GROUP BY
    r.ReNr, r.datum,

clock50 4. Mai 2007 11:03

Re: abfrage aufteilen
 
Hallo und Danke erstmal!

Ich habe es zwar noch nicht ganz durchschaut aber gleich mal probiert: das war die Antwort vom Server:
Zitat:

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( d.MwSt =7, d.Anzahl * d.ArtPreis * ( d.MwSt /100 ) , 0 ) )
Ich glaube bis auf ein feld (ReBetrag) welsches schon den richtigen Wert hat in der Tabelle ist die Richtung ok.

mkinzler 4. Mai 2007 11:07

Re: abfrage aufteilen
 
Es scheint so, daß die Funktion in MySQL If() statt IIF() heißt:
Zitat:

Ich glaube bis auf ein feld (ReBetrag) welsches schon den richtigen Wert hat in der Tabelle ist die Richtung ok.
Hab ich genommen wegen der Gruppierung

clock50 4. Mai 2007 11:29

Re: abfrage aufteilen
 
So das klappt schon ganz gut allerdings nicht mit dem Datum. Das Ergebnis zeigt mir alle Rechnungen.Die Abfrage lautet jetzt:
SQL-Code:
SELECT rechnung.RechNr AS RechNr, rechnung.Datum AS Datum, rechnung.ReBetrag AS ReBetrag, Sum( 
IF ( daten.MwSt =7, daten.Anzahl * daten.ArtPreis * ( daten.MwSt /100  ) , 0  ) ) AS SumMwSt7, Sum( 
IF ( daten.MwSt =19, daten.Anzahl * daten.ArtPreis * ( daten.MwSt /100  ) , 0  ) ) AS SumMwSt19
FROM rechnung
JOIN daten ON daten.ReNr = rechnung.RechNr
WHERE rechnung.Datum
BETWEEN '01.04.2007' AND '30.04.2007'
GROUP BY rechnung.RechNr, rechnung.datum

mkinzler 4. Mai 2007 11:55

Re: abfrage aufteilen
 
Was für einen Typ hat Datum?

clock50 4. Mai 2007 17:29

Re: abfrage aufteilen
 
In der Datenbank habe ich
Zitat:

Datum datetime Nein 0000-00-00 00:00:00
In meiner anderen Abfrage hat es immer geplappt wenn ich das Datum in '' gesetzt habe.

mkinzler 4. Mai 2007 17:32

Re: abfrage aufteilen
 
Caste mal nach DATE

clock50 4. Mai 2007 21:36

Re: abfrage aufteilen
 
Zitat:

Caste mal nach DATE
ich weiß nicht genau was du damit meinst aber ich denke das ich die hauptabfrage auf das Datum beziehen soll oder?

mkinzler 4. Mai 2007 21:40

Re: abfrage aufteilen
 
SQL-Code:
...
WHERE DATE(rechnung.Datum)
BETWEEN '01.04.2007' AND '30.04.2007';
Aber eigentlich sollte es auch so gehen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 Uhr.
Seite 1 von 2  1 2      

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