Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi left join NULL (https://www.delphipraxis.net/131470-left-join-null.html)

nahpets 2. Apr 2009 11:10

Re: left join NULL
 
Hallo,

@Joachim:

Deine 2. Variante ist "nur" oracletauglich, SQL-Server frisst das nicht unverändert, aber das ist mir momentan relativ egal. Zu dieser Variante habe ich eine Verständnisfrage.

Soweit ich weiß wirft union doch doppelte Sätze heraus, hieße das hier nicht, dass wir eventuell mit "Datenverlust" rechnen müssen?
SQL-Code:
select name, bestand, 0 as reserviert from tab1 
union
select name, 0 as bestand, reserviert from tab2
Wenn wir hier in tab 2 zufällig 2 identische Sätze haben, was ja zumindest theoretisch möglich sein könnte, ist doch nachher die Summe für Reserviert eventuell falsch. Müsste es hier nicht union all heißen. Bin mir da aber zugegeben momentan nicht sicher. Prinzipiell ist Deine Methode mit den "leeren" Spalten und dem Union mit anschließender Gruppierung hervorragend geeignet, auch komplexe Abfragen zu vereinfachen. Unter Laufzeitgesichtpunkten habe ich das bisher noch garnicht betrachtet.
Code:
-- Aggregatfunktionen ignorieren NULL-Werte
Ist diese Aussage immer und für alle Datenbanken richtig?

joachimd 2. Apr 2009 11:19

Re: left join NULL
 
Zitat:

Zitat von nahpets
Deine 2. Variante ist "nur" oracletauglich, SQL-Server frisst das nicht unverändert, aber das ist mir momentan relativ egal. Zu dieser Variante habe ich eine Verständnisfrage.

mea culpa...Fehler von mir...habe den Tabellen-Alias vergessen :(
SQL-Code:
select
  name,
  sum(bestand) as bestand,
  sum(reserviert) as reserviert,
  sum(bestand)-sum(reserviert) as diff
from
(
  select name, bestand, 0 as reserviert from tab1
  union
  select name, 0 as bestand, reserviert from tab2
) anyalias
group by 1
Zitat:

Soweit ich weiß wirft union doch doppelte Sätze heraus, hieße das hier nicht, dass wir eventuell mit "Datenverlust" rechnen müssen?
noch'n kleiner Fehler...natürlich UNION ALL (behält die Dubletten)

Zitat:

Code:
-- Aggregatfunktionen ignorieren NULL-Werte
Ist diese Aussage immer und für alle Datenbanken richtig?
IIRC ist dies ANSI-Standard
--
puhhh...ich sollte doch die Beispiele kurz nachvollziehen und nicht einfach drauflostippen

mkinzler 2. Apr 2009 11:31

Re: left join NULL
 
Zitat:

Ist diese Aussage immer und für alle Datenbanken richtig?
Darauf würde ich mich nicht verlassen

nahpets 2. Apr 2009 11:46

Re: left join NULL
 
Hallo,
Zitat:

Zitat von mkinzler
Zitat:

Ist diese Aussage immer und für alle Datenbanken richtig?
Darauf würde ich mich nicht verlassen

Joachim schreibt ja auch extra, dass es Standard ist. D. h. ja nicht, dass bei irgendeiner Datenbank der Standard zu 100% umgesetzt ist.
[OT]Wir hatten hier bei uns letztens ein paar Herren von einem Datenbankhersteller, die uns stolz mitteilten, dass Ihre Datenbank den Standard zu 92% einhält. Die Frage, was denn genau die übrigen 8% seien, so dass man sich als Entwickler darauf einstellen kann, konnte leider nicht beantwortet werden. ;-) Aber die Gesichter waren Gold wert. 8)[/OT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz