[NEWSboard IBMi Forum]

Thema: Sql-Abfrage

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.773
    Die Frage die sich mir stellt, was ist die eigentliche Aufgabenstellung?
    Ich denke, dein Ansatz ist von Grundauf falsch.
    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

  2. #2
    Registriert seit
    Apr 2012
    Beiträge
    360
    Ich soll so Art Statistik erstellen die auflistet in welchen Dateien eine Kundennummer vorkommt.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.773
    Ich nehme mal an, dass KUNDENP die zu ermittelnden Kunden-Nr'n enthält.
    Deine Ausgabedatei hat auch ein entsprechendes Format.
    Nun legst du einen Index über die Kdnr der KUNDENP an und generierst folgenden SQL (legt keinen Wert auf Vollständigkeit):

    insert into ZFile (Dateiname, Feldname, Inhalt, Anzahl)
    select 'DATEINAME', 'FELDNAME', char(KDNRFIELD), count(*) from QFile A
    where exists (select * from KUNDENP P where A.KDNRFIELD = P.KDNR)
    group by 'DATEINAME', 'FELDNAME', char(KDNRFIELD)

    Ist das KDNRFIELD Alpha, solltest du wissen, ob immer ein numerischer Wert drin steht. Dann kannst du das einfach casten, z.B.:

    dec(trim(A.KDNRFIELD), 7, 0)
    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

  4. #4
    Registriert seit
    Apr 2012
    Beiträge
    360
    Herzlichen dank für die Mühe und Geduld.

    Darf ich nur eine abschließende Frage stellen:

    Ich begreife aber immer noch nicht wie die Verknüpfung
    A.KDNRFIELD = P.KDNR funktionieren soll.

    Bei mir in der Datei stehen die Daten wie folgt:
    Code:
    SOURCE              TEILDATEI TEXT                    FELDNAME FELDLAENGE 
    QRPGLESRC/TESTSRC   ZB1AUS	 Bestelldatei(allgemein) B1VAUG#  5          
    QRPGLESRC/TESTSRC   ZB1AUS	 Bestelldatei(allgemein) B1VEXI   17A
    Bei KDNRFIELD(FELDLAENGE) steht nur die wirkliche Angabe der Feldlaenge.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.773
    Betrachte deine erste FOR-Schleife mit Zugriff auf KUNDENP.
    Hier prüfst du doch auf die zu prüfende KDNR.
    Die KUNDENP ist also deine Prüfdatei für die EXISTS-Klausel.
    Du greifst also mit dem variablen Kundenfeld per EXISTS auf die KDNR der KUNDENP zu und erhältst somit nur die Kunden, die in KUNDENP vorhanden sind.

    Deine FOR-Schleife ist doch vollkommen unnötig.
    Die nicht vergebenen KDNR'n sind doch für diese Aufgabe nicht relevant.
    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
    Apr 2012
    Beiträge
    360
    Ich habe es vielleicht nicht genau beschrieben.
    In der Datei File1p habe ich die Datei/Feld/ und Längeangaben erfasst und manuell eingetragen.
    Dabei habe ich das Problem das die Kundennummer manchmal Numerisch und Alpha angeben wurde.

    Ich soll eine Auswertung erstellen(FILE2P) erstellen Informationen gibt wie oft eine Kundennummer in unserem System vorkommt(
    Kundennummer 273 kommt in
    file1p.Datei, file1p.Feld x 10 mal vor
    file1p.Datei, file1p.Feld y 5 mal vor etc.

    Ich begreife nicht wie ich da einen Index erstellen soll, da die Datei File1p nur Definitionen beinhaltet.

    lg

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.427
    Sammel doch alle Kundennummern mitsamt Anzahl in jeder Teildatei auf einmal ein. Etwa so für jeden Eintrag in FILE1P:

    INSERT INTO FILE2P
    SELECT KDNR,"Teildatei","Feld",COUNT(*) FROM Teildatei
    WHERE Feld = KDNR GROUP BY KDNR ORDER BY 1, 2, 3

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.773
    Was enthält dann deine KUNDENP?
    Ich dachte, das Feld KDNNR aus der KUNDENP sind die zu ermittelnden Kunden?
    Die KUNDENP sollte über das Feld KDNNR einen Index erhalten!!!

    Dann baust du dir deine SQL's zusammen.

    SQLFill = 'INSERT INTO FILE2P ' +
    'SELECT char(' + FELDNAME + '), min(''' + TEILDATEI + '''), min(''' + FELDNAME + '''), count(*) from ' + TEILDATEI + ' A ';

    IF %SCAN('A':FELDLAENGE) = *ZEROS;
    SQLFill +=
    ' WHERE exists (select * from KUNDENP P where dec(A.' + FELDNAME + ', 7, 0) = P.KDNNR + ')';
    ELSE;
    SQLFill +=
    ' WHERE exists (select * from KUNDENP P where A.' + FELDNAME + ' = P.KDNNR + ')';
    ENDIF;

    SQLFill += ' group by char(' + FELDNAME + ')';

    exec sql execute :SQLFill;

    Einen eigenen Fetch/Write brauchst du da nicht.
    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

  9. #9
    Registriert seit
    Apr 2012
    Beiträge
    360
    Morgen,

    das Statement ist so was von genial, das einzige war wir unklar ist warum wurde im 1. Select ein Min('TEILDATEI') angegeben?

    Danke noch mal

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.773
    Der Grund ist der "group by".
    Ein Feld ohne Aggregat-Funktion muss in der Liste der Group-By aufgeführt werden.
    Hierbei ist auch ein Ausdruck möglich:

    group by ..., 'TEILDATEI', ...

    Da du aber eine Konstante verwendest, liefert ja MIN immer den richtigen Wert so dass man sich Group By eben sparen kann.

    PS:
    Für meine Genialität werde ich an sonsten bezahlt .
    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

  11. #11
    Registriert seit
    May 2002
    Beiträge
    1.122
    Zitat Zitat von Fuerchau Beitrag anzeigen
    PS:
    Für meine Genialität werde ich an sonsten bezahlt .

Similar Threads

  1. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 14:18
  2. Abfrage nach <> Ziffern in SQL
    By behmer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-06, 13:52
  3. sql abfrage
    By steven_r in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-05-06, 16:49
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 17:21
  5. sql abfrage mit substring
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-11-04, 15:32

Berechtigungen

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