Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi OUTER JOIN liefert keine Ergebnisse (https://www.delphipraxis.net/118351-outer-join-liefert-keine-ergebnisse.html)

Privateer3000 6. Aug 2008 09:43

Datenbank: MDB • Zugriff über: ADO

OUTER JOIN liefert keine Ergebnisse
 
Hiho,
ich hab hier ein Problem mit einem Outer Join
bei dem alle Sätze aus der Tabelle mwsteuer,wenn
ergebnisse die Summe angezeigt werden soll.
Allerdings werden nur die Sätze wenn Ergebnisse
vorhanden sind angezeigt.
SQL-Code:
SQL.Text:='SELECT B.ssatz,sum(IIF(not A.bericht,A.gpreis,0)) AS steurge '+
           'FROM mwsteuer AS B '+
           'RIGHT OUTER JOIN best_archiv AS A '+
           'ON B.ssatz=A.steuer '+
           'WHERE A.zero=:TA2 '+
           'GROUP BY B.ssatz '+
           'ORDER BY B.ssatz';
Beispiel:
so lautet das Ergebnis:
19 100,00

es soll aber:
0 0,00
7 0,00
19 100,00

Was mach ich falsch?

DeddyH 6. Aug 2008 09:48

Re: OUTER JOIN liefert keine Ergebnisse
 
Müsste es nicht ein LEFT OUTER JOIN sein?

Privateer3000 6. Aug 2008 10:14

Re: OUTER JOIN liefert keine Ergebnisse
 
Seltsamerweise bringt es das gleiche Ergebnis...

DeddyH 6. Aug 2008 10:20

Re: OUTER JOIN liefert keine Ergebnisse
 
Access ist leider nicht mein Gebiet, aber schau doch mal hier.

Privateer3000 6. Aug 2008 10:22

Re: OUTER JOIN liefert keine Ergebnisse
 
Ich hab jetzt die Parametrierung nach oben gesetzt
und es funktioniert?!
Warum???
SQL-Code:
SQL.Text:='SELECT B.ssatz,sum(IIF((not A.bericht) AND (not A.zero),A.gpreis,0)) AS steurge '+
           'FROM mwsteuer AS B '+
           'LEFT OUTER JOIN best_archiv AS A '+
           'ON B.ssatz=A.steuer '+
           'GROUP BY B.ssatz '+
           'ORDER BY B.ssatz';

NormanNG 6. Aug 2008 10:59

Re: OUTER JOIN liefert keine Ergebnisse
 
Hi,

kenn mich mit Excel auch nicht besonders auch, aber der SQL-Syntax liefert folgendes:

SQL-Code:
SQL.Text:='SELECT B.ssatz,sum(IIF(not A.bericht,A.gpreis,0)) AS steurge '+
           'FROM mwsteuer AS B '+
           'RIGHT OUTER JOIN best_archiv AS A '+
           'ON B.ssatz=A.steuer '+
           'WHERE A.zero=:TA2 '+
           'GROUP BY B.ssatz '+
           'ORDER BY B.ssatz';
mit dieser Abfrage werden mit der where-Bedingung nur Datensätze in der
Ergebnismenge zugelassen, für die (a.zero=:TA2) gilt. Das ist aber immer nur
dann der Fall, wenn Datensätze in der Tabelle A verhanden sind.

Hier dagegen
SQL-Code:
SQL.Text:='SELECT B.ssatz,sum(IIF(not A.bericht,A.gpreis,0)) AS steurge '+
           'FROM mwsteuer AS B '+
           'LEFT JOIN best_archiv AS A '+
           'ON B.ssatz=A.steuer and A.zero=:TA2 '+
           'GROUP BY B.ssatz '+
           'ORDER BY B.ssatz';
wird die Bedingung für den Join selbst verwendet, und durch den left join
eben alle Datensätze der "rechten" Tabelle zzgl. aller ggf. vorhandenen
passenden Datensätze der "linken" Tabelle in die Ergebnismenge übernommen...

Privateer3000 6. Aug 2008 12:31

Re: OUTER JOIN liefert keine Ergebnisse
 
Das leuchtet ein..

Danke!


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