Thema: Join-Frage

Einzelnen Beitrag anzeigen

Ykcim

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

Join-Frage

  Alt 1. Okt 2020, 11:30
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,

ich finde die Beschreibung einer Abfrage immer schwierig, aber ich versuche es verständlich zu schreiben...

Ich habe eine Tabelle, in der Kundenbedarf mit Datum und verantwortlicher Mitarbeiter drinstehen. Es gibt auf viele Kundenbedarfe für ein ein Teil, die von unterschiedlichen Kunden und damit auch von unterschiedlichen Mitarbeiter bearbeitet werden.

Ich möchte eine Abfrage erstellen, in der ich alle Kundenbedarfe eines Artikels nach Kalenderwochen summiert darstellen kann. Dabei sollen nur die Bedarfe angezeigt werden, von Artikeln, für die der jeweilige Benutzer verantwortlich ist. Aber von diesen Artikeln sollen auch die Bedarfe anderer Kunden angezeigt werden.

Bei dieser Abfrage raucht der SQL-Server leider ab, bzw. bringt nach langer Zeit einfach kein Ergebnis:
Delphi-Quellcode:
select 0 as Nr,
       o.watenr as ArtikelNr,
       sum(o.ltrest) as Menge ,
       case when week(o.ltlite,3)<10 then concat(year(o.ltlite),'0',week(o.ltlite,3)) else concat(year(o.ltlite),week(o.ltlite,3)) end as KW,
       o.tebez1 as ArtikelBez
from liefersituation o
where (o.ltlite >= current_date and week(o.ltlite,3)<week(current_date,3)+25 )
and o.watenr in (select a.watenr from liefersituation a where a.lpdivk='SSC'group by a.watenr)
group by o.watenr, kw
order by o.watenr, kw

Diese Abfrage bringt zwar nach 23 Sekunden ein Ergebnis, aber hier stimmen die Mengen nicht. Sie ist immer ein Vielfaches von der wirklichen Menge, sodass ich glaube, dass die Berechnung so oft durchgeführt, wie Anzahl einzelner Kundenbedarfe vorhanden sind...
Delphi-Quellcode:
select 0 as Nr,
       a.watenr as Artikel,
       sum(o.ltrest) as Menge ,
       case when week(o.ltlite,3)<10 then concat(year(o.ltlite),'0',week(o.ltlite,3)) else concat(year(o.ltlite),week(o.ltlite,3)) end as KW,
       o.tebez1 as ArtikelBez
from liefersituation o
cross join liefersituation a on o.watenr=a.watenr and a.lpdivk='SSC'
where (o.ltlite >= current_date and week(o.ltlite,3)<week(current_date,3)+25 )
group by o.watenr, kw
order by o.watenr, kw
Ich habe mal ein Bild vom Ergebnis der Abfrage hochgeladen. Die eingekreiste Menge ist um den Factor 10 zu hoch, die Mengen des nachfolgenden Artikel sogar um den Faktor 20...

Hat jemand eine Idee für mich, wie ich das lösen kann?

Vielen Dank
Patrick
Miniaturansicht angehängter Grafiken
result_query.jpg  
Patrick
  Mit Zitat antworten Zitat