AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Arbeiten in einem temporären TJvMemoryData
Thema durchsuchen
Ansicht
Themen-Optionen

Arbeiten in einem temporären TJvMemoryData

Ein Thema von waldforest · begonnen am 7. Mai 2014 · letzter Beitrag vom 8. Mai 2014
 
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Arbeiten in einem temporären TJvMemoryData

  Alt 8. Mai 2014, 19:57
Hallo,
jetz brauche ich doch noch mal Hilfe bei meiner SQL Abfrage.

Was will ich hier erreichen.
Ich muss die empfohlene Bestellmenge wie folg berechnen.

Normmenge - Lager_ist - bereistbestellt + Rückstände

Mein Lager umfasst ca 10 000 Artikel.

Aktuell habe ich meine Abfrage wie folgt aufgebaut, läuft auch, wenn in der Rückständetabelle, bereistbestellte-Tabelle nur wenige Einträge vorhanden sind schnell. Sobald aber in den Tabellen der Rückstände bzw. bereist bestellten viele Einträge (> ca. 50) ist dies mit langen Wartezeiten verbunden.

Nun bin ich was SQL betrifft noch am Anfang meiner Lernkurve, und denke, dass sich hier noch etwas optimieren lässt. Leider kann Firebird im Wherer keine Alias verabeiten.

Hat jemand einen Tipp wie ich hier im WHERE optimieren kann ?

SQL-Code:
Select A.Art_ID, A.Art_HERSTNR, A.Art_LIEFERANT_ID, A.Art_VKTEXT_DE AS VKText,
((SELECT ( (A.Art_Lag_NORM-A.Art_Lag_IST) - IIF(SUM(N.NBEST_BESTM) IS NULL, 0, SUM(N.NBEST_BESTM))FROM NACHBESTELLUNG N WHERE N.NBEST_Art_ID = A.Art_ID)+
(SELECT IIF(SUM(r.Art_MENGE) IS NULL, 0, SUM(r.Art_MENGE)) FROM RUE_Art r WHERE R.Art_ID = A.Art_ID )) as Empfehlung,
(A.Art_Lag_NORM-A.Art_Lag_IST) AS Bedarf,
SELECT IIF(SUM(r.Art_MENGE) IS NULL, 0, SUM(r.Art_MENGE) ) FROM RUE_Art r WHERE R.Art_ID = A.Art_ID) as Rueckstand,
SELECT (IIF(SUM(N.NBEST_BESTM) IS NULL, 0, SUM(N.NBEST_BESTM))-IIF(SUM(N.NBEST_LIEFERMENGE) IS NULL,0,SUM(N.NBEST_LIEFERMENGE))) FROM NACHBESTELLUNG N WHERE N.NBEST_Art_ID = A.Art_ID) as Bestellt ,
A.Art_Lag_IST , A.Art_Lag_MIN , A.Art_Lag_NORM WHERE A.Art_Lag_IST + (SELECT IIF(SUM(N.NBEST_BESTM) IS NULL, 0, SUM(N.NBEST_BESTM))) FROM NACHBESTELLUNG N
WHERE N.NBEST_Art_ID = A.Art_ID) - (SELECT IIF(SUM(r.Art_MENGE) IS NULL, 0, SUM(r.Art_MENGE)) FROM RUE_Art r WHERE R.Art_ID = A.Art_ID )) <= A.Art_Lag_MIN and A.Art_LIEFERANT_ID = :xLiefernat_ID;
Ich habs jetzt temporär mit einem Filter gelöst und die Where nur auf den
A.Art_LIEFERANT_ID = :xLiefernat_ID gesetzt. Geht sicher eleganter ??
mfg wf

Geändert von waldforest ( 9. Mai 2014 um 17:51 Uhr)
  Mit Zitat antworten Zitat
 


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 06:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz