AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

left join NULL

Ein Thema von jangbu · begonnen am 25. Mär 2009 · letzter Beitrag vom 2. Apr 2009
Antwort Antwort
Seite 2 von 2     12   
nahpets
(Gast)

n/a Beiträge
 
#11

Re: left join NULL

  Alt 2. Apr 2009, 10:10
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?
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: left join NULL

  Alt 2. Apr 2009, 10:19
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
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: left join NULL

  Alt 2. Apr 2009, 10:31
Zitat:
Ist diese Aussage immer und für alle Datenbanken richtig?
Darauf würde ich mich nicht verlassen
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#14

Re: left join NULL

  Alt 2. Apr 2009, 10:46
Hallo,
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]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 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