AGB  ·  Datenschutz  ·  Impressum  







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

MySQL Qwert kummulieren

Ein Thema von Ykcim · begonnen am 12. Dez 2019 · letzter Beitrag vom 17. Dez 2019
Antwort Antwort
Ykcim

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

MySQL Qwert kummulieren

  Alt 12. Dez 2019, 13:42
Datenbank: MySQL • Version: 5 • Zugriff über: FireDac
Hallo Zusammen,

ich habe eine größere Query, bei der ich bei einer Spalte Hilfe brauche...
Ich möchte den Lagerabgang und den Lagerzugang (geplant) in einer Tabelle darstellen. Dann möchte ich den kummulierten Lagerbestand darstellen. Lagerabgang sind Kundenaufträge und Lagerzugang sind Produktionsaufträge und sind in unterschiedlichen Tabellen. Meine Query sieht bis jetzt so aus:
Delphi-Quellcode:
select a1.lgzgda as Datum,
       'as Kunden,
       'as Bedarf,
       'as Lager,
       concat(a1.waaunr, '-', a1.waaupo) as Auftrag,
       a1.wafemg as Auftragsmenge,
       a1.oaagnr,
       concat('(', oamanr,') ', a1.oaagbz) as AGBezeichnng,
       a1.kritfa,
       date_format(a1.Epress,'%d.%m.%Y') as theodate,
       date_format(eilfa.start,'%d.%m.%Y') as start,
       concat(benutzer.as400kz,': ','(', kommentfa.ag,') ',kommentfa.kommentar) as Kommentar,
       eilfa.angesehen,
       eilfa.angeschoben,
       a1.epressproz,
       a1.emuster
from as400 as a1
left join eilfa on eilfa.waaunr=a1.waaunr and eilfa.waaupo=a1.waaupo and eilfa.oaagnr=a1.oaagnr
left join kommentfa on kommentfa.waaunr=a1.waaunr and kommentfa.waaupo=a1.waaupo and kommentfa.id=
   (select max(id) from kommentfa where kommentfa.waaunr=a1.waaunr and kommentfa.waaupo=a1.waaupo)
left join benutzer on concat(benutzer.vorname,' ',benutzer.name)=kommentfa.verfasser
where oatlkz<>9 and watenr= 10009923 and a1.lgzgda<>'0000-00-00'
group by a1.waaunr
union
select ltlite as Datum,
       kdkuna as Kunden,
       liefer as Bedarf,
       'as Lager,
       'as Auftrag,
       'as Auftragsmenge,
       'as oaagnr,
       'as AGBezeichnung,
       'as kritfa,
       'as theodate,
       'as Start,
       'as Kommentar,
       'as angesehen,
       'as angeschoben,
       'as epressproz,
       'as emuster
from omslp
where watenr= 10009923
order by Datum asc, oaagnr desc
Das Ergebnis habe ich mal als Bild an den Post gehängt. In diesem Bild habe ich auch in rot eingezeichnet, was das Ziel ist...
In der ersten Spalte ist das Datum. Überall da, wo ein Kunde drinsteht, ist auch für dieses Datum ein Abgang geplant. Wenn kein Kunde da steht, dann steht ein der Spalte Auftrag eine Nummer. Zu dem Datum in Spalte 1 muss der Auftrag fertig werden. Die Daten hier sind in der Vergangenheit - alte Datenbasis - im echten Leben sind die in der Zukunft...

Kann mir jemand helfen, wie ich die Kummulierung für Spalte 4 (Lager) hinbekomme? Ich würde in die erste Zeile den Lagerbestand aktuell holen (12.000) und die Auftragsmenge aus Zeile 1 addieren (Auftragsmenge=213752). In der zweiten Zweile würde ich von der Summe der ersten Zeile die Spalte Bedarf (39000) subtraieren...

Vielen Dank
Patrick
Miniaturansicht angehängter Grafiken
query_result.jpg  
Patrick

Geändert von Ykcim (12. Dez 2019 um 14:07 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.201 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MySQL Qwert kummulieren

  Alt 12. Dez 2019, 14:42
Ich antworte zwar nicht auf deine Frage, aber:

Ich hatte einmal die gleiche Aufgabenstellung + das so zu lösen war bei geringer Datenmenge ganz brauchbar. je mehr daten aber im System waren, desto langsamer wurde das. Außerdem gibt es irgendwann sowas wie Inventureinträge, manuelle Lagerkorrekturen etc.. Ich hatte damals auch noch einen (Mischpreis)mit in Spiel.

Erster Versuch war, für den Lagerbestand eine eigene Funktion zu schreiben, die man dann mit
Code:
select …, f_lagerstand(artikelid) from …
einbindet. Geht gut, ist irgendwann nicht performant.

Zweiter Versuch: Idee: Habe ich den Lagerbestand als Attribut in meiner Tabelle, kann ich ihn einfach ausgeben und muss ihn nicht jedes Mal neu berechnen. Ich muss ihn nur berechnen, wenn er sich ändert. Wann ändert er sich? bei INSERT/DELETE/UPDATE -- > Das schreit nach TRIGGER.

Vielleicht hilft dir das.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: MySQL Qwert kummulieren

  Alt 12. Dez 2019, 16:21
Wenn ich Dich richtig verstanden habe, möchtest Du da so eine Art Spreadsheet Veranstaltung draus machen. ("vorige Zeile .. usw.").
Das ist eingedenkt des vorigen Beitrages kein Spaß in SQL. SQL arbeitet erstmal Mengen-orientiert und kennt die vorige Zeile nicht.

Kurz:
Du möchtest Windows Functions benutzen und dazu möchtest Du glaub ich eine aktuellere DB Version. Mit der ollen mySQL wird es unschön.

Kannst Du auf 8 umsteigen?
Gruß, Jo
  Mit Zitat antworten Zitat
Ykcim

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

AW: MySQL Qwert kummulieren

  Alt 17. Dez 2019, 13:43
Hallo Zusammen,

die MySQL-Version kann ich aktuell nicht ändern. Ich glaube, dass wird zu kompliziert, sodass es einfacher wird, dass über eine Schleife im Nachgang laufen zu lassen.

Aber vielen Dank für die Einschätzung
Patrick
Patrick
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:28 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