[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2006
    Beiträge
    3

    Ranking- oder Top-Funktion

    Hallo.
    Ich habe 2 Dateien auf der i5. Positionsdatei und Konditionsdatei. In der Positionsdatei kann ein Artikel mit verschiedenen Versandwochen mehrmals vorkommen. In der Konditionsdatei kann der Artikel auch mehrmals stehen, mit einer Wochenangabe, an der ein Preis seine Gültigkeit hat. Ich muss nun für jeden Positionssatz den gültigen Preis in der Woche suchen. Ich muss das Ganze in Access bereitstellen. Dort mit verknüpften Tabellen und einer Abfrage mit Unterabfrage (Select Top 1........) läuft es viel zu lange. 5 Min. für die erste Seite. Ich wollte das Ganze jetzt als eine Pass-Through-Abfrage gestallten. Doch wie sieht hier die SQL-Syntax aus?
    Ich weiß es leider nicht.
    Irgendein Vorschlag?

    LG
    Kalle

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nun, da hilft dir nur ein skalarer Subselect:

    select ....
    , (select preis from preisfile where ..... fetch first 1 row only), ... from ...

    Das Problem hierbei ist, dass der Subselect keinen order by enthalten kann und somit das Ergebnis ggf. nicht das gewünschte ist.

    Ansonsten hilft da wohl nur eine UDF.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Sep 2006
    Beiträge
    3

    Na toll.

    Hi,
    also kann doch leider mein Problem nicht auf die i5 abschieben.

    Sch........ade.

    Danke.


    LG
    Kalle

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    vielleicht stehe ich ja auf dem Schlauch, aber Du willst doch einfach die Positions-Datei über Artikel-Nr. und Kalenderwoche mit der Konditions-Datei verknüpfen, um den gültigen Preis für die Position zu ermitteln oder nicht?
    Pro Versandwoche und Artikel gibt es in der Konditions-Datei einen Satz?

    Wenn ja, musst Du lediglich die Positions-Datei mit der Konditions-Datei über Artikel-Nr. und Versandwoche verknüpfen. (Für beide Dateien sollten allerdings Zugriffswege über ArtikelNr/Versandwoche vorhanden sein)

    PHP-Code:
    Select p.*, k.preis
       from Position p join Kondition k 
            on     p
    .ArtikelNr. = k.ArtikelNr
               
    and p.VersandWoche k.Versandwoche
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    @Birgitta
    Das Problem ist, dass ich nicht für jede Woche, jedes Datum genau 1 Preis habe.
    Meistens wird über "Gültig Von-Bis" eine Kondition geregelt.

    Mit "Preisdatum = Konditionsdatum" komme ich da nicht weiter, es gilt eben "Preisdatum >= Konditionsdatum" bzw. "Konditionsdatum <= Preisdatum" bzw. "Konditionsdatum between GueltigVon and GueltigBis".

    Es gibt also zu einem Artikel mehrere Preise, wobei ich eben nur den 1. Preis mit dem kleinsten Bis-Datum benötige.

    Als Full-Select gilt demnach

    select Preis from PreisFile
    where artikel='XXXX' and GueltigBis >= Konditionsdatum
    Order by Gueltigbis
    fetch first 1 row only

    Dieses Konstrukt benötige ich aber im scalaren Subselect.
    2 Probleme:
    1. Sortierung nach einem Feld, dass nicht in der Ergebnisliste steht
    2. nur den 1. Satz
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Sep 2006
    Beiträge
    3

    Wink

    Hallo und guten Morgen,

    da habe ich ja eine kleine Diskussion angeregt.
    Es wird wohl nicht so gehen, wie ich es mir gedacht,
    oder via Abfrage in Access (die ja viel zu lange lief) gemacht habe.

    Da muss ich mir Wohl oder Übel etwas anderes einfallen lassen.

    Trotzdem vielen Dank an Euch.

    LG
    Kalle

Similar Threads

  1. SQL: Ausführungsverhalten einer Funktion in einem CASE-Statement
    By mwithake in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-08-09, 14:57
  2. Funktion in WRKACTJOB wiederherstellen
    By Marsman in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 27-09-06, 12:32
  3. sql funktion
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-06-06, 12:16
  4. SQL TOP 500
    By Spoldo in forum IBM i Hauptforum
    Antworten: 15
    Letzter Beitrag: 21-03-06, 13:50
  5. Antworten: 0
    Letzter Beitrag: 02-06-04, 07:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •