Thema: Delphi left join NULL

Einzelnen Beitrag anzeigen

Benutzerbild von joachimd
joachimd

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

Re: left join NULL

  Alt 2. Apr 2009, 08:40
müsste auch über eine einfache Gruppierung gehen:

SQL-Code:
select
  a.Bestand,
  b.Reserviert,
  a.Bestand - ifnull(b.Reserviert,0) As Diff
from
tab1 a left outer join
(
  select
    Name,
    Sum(Menge) As Reserviert -- Aggregatfunktionen ignorieren NULL-Werte
    from tab2
    Group By 1
) b
on a.name=b.name
Je nach DBMS ist diese Variante schneller.
Übrigens: Verzichte bitte auf die Verknüpfung über den Namen und nimm einen nichtssagenden Schlüssel (Primary Key, Autoinc -bäh- oder GUID). Einmal den Namen falsch geschrieben, findest Du die richtige Menge nicht mehr.
Und noch eine ganz exotische Geschichte, die eventuell noch mehr Performance bringen kann - und vor allem auch hilft, falls Du mehrere Bestände des gleichen Artikels in Tab1 hast:

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
)
group by 1
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat