Delphi-PRAXiS

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

clock50 4. Mai 2007 21:56

Re: abfrage aufteilen
 
Das geht garnicht
Zitat:

Fehler

SQL-Befehl :

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 date( rechnung.Datum )
BETWEEN '01.04.2007' AND '30.04.2007'
GROUP BY rechnung.datum, rechnung.RechNr
LIMIT 0 , 30

MySQL meldet:
#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 '( rechnung.Datum )
BETWEEN '01.04.2007' AND '30.04.2007'
GRO

mkinzler 4. Mai 2007 22:02

Re: abfrage aufteilen
 
Deine MySQL-Version kennt diese Funktion wohl nicht. Aber die ursprüngliche Version müßte ja eigentlich gehen.
Noch ein Versuch :

SQL-Code:
...
EXTRACT( MONTH from rechnung.Datum) = 4 and EXTRACT(YAER from rechnung.Datum) = 2007 ...

clock50 5. Mai 2007 15:09

Re: abfrage aufteilen
 
Ich war schon am verzweifeln aber ich habe mal aus
Zitat:

YAER
YEAR gemacht und o' Wunder es klappt. Wenn man sich schon mit solchen Problemen abgibt - schleicht sich noch ein Fehlerteufel ein.
Ich bin sehr dankbar und freue mich, daß es euch gibt. :hello: :dancer: (-: !Danke! :-)


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