Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Fehler bei Left Join

  Alt 13. Sep 2021, 11:50
Datenbank: MSSql • Version: 11 • Zugriff über: FireDac
Hallo Zusammen,

ich habe eine Query über mehrere Tabelle mit Left Join. Eigentlich klappt auch alles. Allerdings ist jetzt nach ein paar Wochen aufgefallen, dass zwei Werte, die summiert werden, falsch sind.

Delphi-Quellcode:
SELECT    a.zynrefkl AS 'Artikelnummer',
         a.afg_oms1 AS 'Artikelbezeichnung 1',
         concat('VPE:',a.per__chk,' Stück') AS 'Artikelbezeichnung 2',
         'AS 'Artikelbezeichnung 3',
         'AS 'Artikelbezeichnung 4',
         'AS 'Artikelbezeichnung 5',
         'AS 'Artikelbezeichnung 6',
         b.in__vrrd AS 'Bestand',
         a.per__chk AS 'Abgreifmenge',
         a.minstock AS 'Mindestbestand',
         CASE WHEN b.in__vrrd < a.minstock then 'Mindestmenge unterschrittenELSE 'END AS 'Bestandskommentar',
         'AS 'Kommentar',
         COALESCE(SUM(c.b_aantal),0) AS 'Rückstand',
         COALESCE(SUM(d.aant_uit), 0) AS 'Gesamtverbrauch'
FROM afgart__ a
LEFT JOIN afgant__ b ON b.afg__ref = a.afg__ref
LEFT JOIN bstlyn__ c ON c.afg__ref = a.afg__ref AND c.levv_dat<GETDATE() AND c.lbn__ref = '
LEFT JOIN hisafg__ d ON d.afg__ref = a.afg__ref
LEFT JOIN gegdet__ e on e.det__ref = a.afg__ref AND e.vrg__ref = '000002and tabname_ = 'afgart__'
WHERE a.kla__rpn = 'MEYLE'
AND a.zynrefkl <> ''
AND (e.antw_txt <> '1or e.antw_txt is NULL)
AND c.zynrefkl='108470001'
GROUP BY a.zynrefkl, a.afg_oms1, b.in__vrrd, a.per__chk, a.minstock
order by a.zynrefkl
Das Problem tritt durch die Zeile LEFT JOIN hisafg__ d ON d.afg__ref = a.afg__ref Ohne die Tabelle d wird der Rückstand (Tabelle C) korrekt berechnet. Aber mit der Tabelle D kommt eine viel zu hohe Summe für den Rückstand raus und auch der Gesamtverbrauch ist viel zu hoch.

Sieht jemand, was ich falsch mache?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat