[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2018
    Beiträge
    70

    Create Index mit Limit 1

    Hallo,

    ich würde gerne einen Index über eine physische Datei generieren, in der ich mir nur den jeweils aktuellsten Datensatz einer Schlüsselfolge habe wollte.

    Beispielsweise:

    FIRMA
    KUNDE
    ARTIKEL
    DATUM - absteigend

    Da es sich um eine Umsatzdatei handelt, wollte ich nur den aktuellsten Datensatz in der logischen Sicht sehen (Limit=1).

    Kann man Limit beim erstellen von create index angeben? M.E. nicht!

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    931
    ************ GELÖSCHT ****************

  3. #3
    Registriert seit
    Jan 2012
    Beiträge
    931
    Ich muss den Code nochmal schreiben. Ich habe in meiner ersten Antwort mit spitzen Klammern gearbeitet. Dabei hat der Editor einiges verschluckt.

    Hallo,

    kannst du nicht einfach mit SQL den passenden Satz abgreifen? Den Index würde ich dann nach "firma, kunde, artikel, datum desc" aufbauen.

    select * from umsatz where firma=x and kunde=y and artikel=z order by datum desc fetch first row only;

    oder, falls du alle aktuellsten verarbeiten willst:

    with daten as (
    select firma, kunde, artikel, max(datum) as maxDate from umsatz
    group by firma, kunde, artikel)
    select .* from daten
    join umsatz on daten.firma=umsatz.firma and daten.kunde=umsatz.kunde and daten.artikel=umsatz.artikel and daten.maxDate = umsatz.datum;

    So müsstest du alle aktuellsten Sätze aus deiner bekommen. Ich gehe mal davon aus, dass ein Artikel nur einmal pro datum vorkommt.

    Das Statement kannst du dir auch als View ablegen.

    Dieter

  4. #4
    Registriert seit
    Sep 2018
    Beiträge
    70
    Hallo Dieter,

    danke für Deine Antwort. Sorry, war missverständlich geschrieben von mir.

    Mein Problem ist (leider) ein anderes:

    ich habe pro Kunde / Artikel mehrere Datensätze mit unterschiedlichem Datum.

    Hier ein Beispiel

    Kunde |Artikel |Datum
    001 | 400 | 01.12.2020
    001 | 400 | 15.12.2020
    002 | 300 | 03.12.2020
    002 | 300 | 19.12.2020

    Was ich in einer view benötige ist:

    Wann wurde der Artikel eines Kunden zuletzt bestellt.

    In diesem Beispiel sollte das Ergebnis 2 Zeilen liefern:

    Kunde |Artikel |Datum
    001 | 400 | 15.12.2020
    002 | 300 | 19.12.2020

    Somit ist klar, dass der Kunde 001 den Artikel 400 am 15.12.2020 zuletzt bestellt hat.

    Das Ganze wollte ich gerne in so ablegen, damit ein Fremdsystem sich einfach dieser Daten bedienen kann. Eben wie eine Index bzw. logische Datei.

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    931
    Hallo Frank,
    meine obige Common Table Expression löst genau dein Problem, denke ich. Du kannst das ganze Statement ("with daten ...") als View ablegen. Da kann dann jeder drauf zugreifen.

  6. #6
    Registriert seit
    Jan 2012
    Beiträge
    931
    Ich habe das Statement etwas komplex geschrieben, weil ich dachte, dass du alle Spalten aus deiner Umsatztabelle haben möchtest. Wenn es nur um die Schlüssel geht, ist es viel einfacher:

    select firma, kunde, artikel, max(datum) as datum from umsatz
    group by firma, kunde, artikel;

    Das müsste genau dein gewünschtes Ergebnis liefern.

    Mit create view ... kannst du das dann ablegen und jeder kann darauf zugreifen.

  7. #7
    Registriert seit
    Sep 2018
    Beiträge
    70
    Hallo Dieter,

    herzlichen Dank für deine Unterstützung. Das ist genau das, nachdem ich gesucht habe. Mir war der Syntax und View bzw. Index nicht ganz klar.

    Ich habe vergeblich im SQL Handbuch gesucht... (auch noch an der falschen Stelle) :-(

    Grüße Frank

Ähnliche Themen

  1. WRKDIRE Limit 8 Zeichen
    Von Chris.jan im Forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 19-07-18, 07:59
  2. SQL View mit Index/Key
    Von malzusrex im Forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 19-10-16, 19:53
  3. create index - wann?
    Von Bobou im Forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 07-10-16, 08:31
  4. LF / SQL index
    Von woodstock99 im Forum NEWSboard Programmierung
    Antworten: 31
    Letzter Beitrag: 18-03-15, 14:29
  5. Create Index
    Von tarkusch im Forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 06-11-13, 12:44

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •