Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Brauche SQL-Profi wegen einer Abfrage... (https://www.delphipraxis.net/28561-brauche-sql-profi-wegen-einer-abfrage.html)

lume96 27. Aug 2004 07:31

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Zitat:

Zitat von Killerloop
Falls jemand eine Idee hat... ich bin für alles offen.

Ich hab eine :mrgreen:

Du legst 'ne Zwischentabelle an die Du dann hinterher wieder vernichtest :

SQL-Code:
/*kommentar*/
create table tmpprovision
(name varchar(50),
monat varchar(2),
kasko float,
schutzbrief float)
Dann die Daten hinzufügen.
für die Kasko :
SQL-Code:
/*Kommentar*/
insert into tmpprovision
select name, monat, sum(provision),0
from test2 
where art='kasko'
group by name, monat

und jetzt für den Schutzbrief :
SQL-Code:
/*Kommentar*/
insert into tmpprovision
select name, monat, 0, sum(provision)
from test2
where art='schutzbrief'
group by name, monat

und nun das Ganze auslesen :
SQL-Code:
select name, sum(kasko) as kasko, sum(schutzbrief) as schutzbrief, sum(kasko)+sum(schutzbrief) as total
from tmpprovision
where monat = '01'
group by name
am Ende dann 'nen "drop table tmpprovision" wenn Du den Quickreport erstellt hast. Kannst die Tabelle sonst auch einfach nur löschen "delete from tmpprovision", dann brauchst Du sie beim nächsten Quickreport nicht erst wieder anlegen.

Ist zwar nicht besonders elegant, dafür sollte es aber funktionieren.

MfG
Lutz

Jelly 27. Aug 2004 08:00

Re: Brauche SQL-Profi wegen einer Abfrage...
 
Hallo,

naja, das mit dem Temporären Tabellen ist so ne Sache, die extremely langsam wird bei größeren Datenmengen... Zumindest bei Access. Mit MSSQL kannst du die temp. Tabellen im RAM halten, was die Sache vertretbar macht, aber nicht bei Access...

Es gibt aber womöglich noch ne Möglichkeit, über Umwegen. Nimm dir meine 2 Views von oben, und ergänz dein Schlussresultset duch folgende Abfrage:

Delphi-Quellcode:
select k.Name, k.KaskoProv, s.SchutzProv
from Provision p left join vwSchutz s on p.Name = s.Name,
Provision p left join vwKasko k on p.Name = s.Name
Damit arbeitest du mit 3 Tabellen. Wichtig ist ja, daß du alle Namen aus Provision kriegst, und nicht nur die mit Schutz oder nur mit Kasko (XOR). Daher der left join auf Provision, der dir auf jeden Fall alle Namen liefert. Habs aber so nicht probiert.

Gruß,

Killerloop 27. Aug 2004 10:21

Re: Brauche SQL-Profi wegen einer Abfrage...
 
ich werd mal die Methode probieren mit den temporären tabellen. geschwindigkeit ist nicht so das problem, sind ja keine 1000 datensätze die da durchrauschen. Mal sehen.

Danke euch alle nochmals !

Schönes WoE !

Killerloop 30. Aug 2004 15:07

Re: Brauche SQL-Profi wegen einer Abfrage...
 
So, ich wollte nur mitteilen das es funktioniert hat. Danke euch. Ich hab es jetzt mit einem Mix aus temporären tabellen und wirren abfragen hinbekommen. :-)

Ohne dieses Forum wäre ich wahrscheinlich daran verzweifelt.

Vielleicht kann ich ja, irgendwann in ferner Zukunft, auch mal jemandem hier helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 Uhr.
Seite 3 von 3     123   

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