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 unterschritten' ELSE '' 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 = '000002' and tabname_ = 'afgart__'
WHERE a.kla__rpn = 'MEYLE'
AND a.zynrefkl <> ''
AND (e.antw_txt <> '1' or 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