[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: SQL-Abfrage

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    31

    SQL-Abfrage

    Hallo Zusammen.

    Ich habe eine LF über 4 PF.Die sind nach Kundenummer,Anlagedatum desc und Anlagezeit desc sortiert.Wenn ich in Rpg die Datei lese, erreiche ich, dass immer der neueste Satz (Datum/Zeit) zuerst angezeigt wird. (z.B. Datei -B-, Datei -D-, Datei -A- ...).

    Ist es möglich dieses über SQL zu erreichen ??????

    Vielen Dank im Voraus

    Horst

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Horst,

    klare Frage => klare Antwort: ja

    mfg

    Dieter Bender

    Zitat Zitat von horst
    Hallo Zusammen.

    Ich habe eine LF über 4 PF.Die sind nach Kundenummer,Anlagedatum desc und Anlagezeit desc sortiert.Wenn ich in Rpg die Datei lese, erreiche ich, dass immer der neueste Satz (Datum/Zeit) zuerst angezeigt wird. (z.B. Datei -B-, Datei -D-, Datei -A- ...).

    Ist es möglich dieses über SQL zu erreichen ??????

    Vielen Dank im Voraus

    Horst
    PS: Bei der Definition des Cursors muss freilich eine ORDER BY Klausel angegeben werden, sonst überlässt Du die Reihenfolge gemäß SQL Standard dem Datenbank System.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    31
    Hallo Dieter,

    vielen Dank für die schnelle Antwort.

    Noch eine klare Frage - Wie wäre es mit einem kleinen Beispiel ??

    Gruss

    Horst

  4. #4
    Registriert seit
    Aug 2004
    Beiträge
    923

    Talking ohne worte

    nun bin ich ja mal auf die antwort gespannt....


  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Horst,

    wie wär's mit:
    select ... from Datei A
    union
    select ... from Datei B
    union ...

    order by datum desc

    Dieter Bender

    Zitat Zitat von horst
    Hallo Dieter,

    vielen Dank für die schnelle Antwort.

    Noch eine klare Frage - Wie wäre es mit einem kleinen Beispiel ??

    Gruss

    Horst
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    31
    Hallo Dieter,

    klappt prima. Nur Order by wird nicht angenommen.

    Gruss

    Horst

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Horst,

    könntest Du Dich vielleicht etwas präziser ausdrücken? Was machst Du mit welchem Release und welche Fehlermeldung bekommst Du? Bei mir wird unter V5R1 order by nicht nur "angenommen" sondern auch ausgeführt, wenn ich das am interaktiven prompt eintippe und ich sehe da keinen Grund, dass das im embedded SQL anders wäre.

    mfg

    Dieter Bender

    Zitat Zitat von horst
    Hallo Dieter,

    klappt prima. Nur Order by wird nicht angenommen.

    Gruss

    Horst
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    Registriert seit
    Jun 2001
    Beiträge
    31
    Hallo Dieter,

    mein SQL (V5R1) sieht so aus

    SELECT EKDNR, EANDATE, EANTIME FROM emfaxhp WHERE ekdnr =
    1124002 UNION ALL SELECT DIKDNR, DIEANDATE, DIEEANTIME FROM divobjp
    WHERE dikdnr = 1124002 .

    Wähle ich Order by im 1. Select aus, erhalte ich folgende Fehlermeldung :

    Nachrichten-ID . . . . : SQL6308 Bewertung . . . . . . : 00
    Nachrichtenart . . . . : Information
    Sendedatum . . . . . . : 09.09.04 Sendezeit . . . . . . : 15:25:45

    Nachricht . . . : Nicht mit UNION zulässig.
    Ursache . . . . : Die Anweisung SELECT soll über UNION mit einer anderen
    Anweisung verbunden werden. Gleichzeitig wurde jedoch auch mindestens eine
    der folgenden Angaben gemacht:
    -- Eine Klausel ORDER BY (Daten, die auf die Schlüsselwörter ORDER BY
    folgen)
    -- Eine Klausel FOR UPDATE OF (Daten, die auf die Schlüsselwörter FOR
    UPDATE OF folgen)
    -- Die Angabe, daß zusätzliche Optionen angegeben werden sollen.
    Wenn die Anweisung SELECT über UNION mit einer anderen Anweisung verbunden
    werden soll, dürfen weder die Klausel ORDER BY noch die Klausel FOR UPDATE
    OF, noch zusätzliche Optionen angegeben werden.

    Ich kann im Select auch nicht alle Felder auswählen

    Gruss

    Horst

  9. #9
    Registriert seit
    Jun 2001
    Beiträge
    31
    Nachtrag,

    dieses SQL funktioniert.

    SELECT DISTINCT EKDNR, EANDATE, EANTIME, EUSER, ENPATH, ENEMPF FROM
    emfaxhp WHERE ekdnr = 1124002 UNION ALL SELECT DIKDNR, DIEANDATE,
    DIEEANTIME, DIUSER, DIDESC, DIOBJ FROM divobjp WHERE dikdnr =
    1124002 ORDER BY 2 desc
    SELECT-Anweisung vollständig verarbeitet.

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Horst,

    nichts anderes hatte ich Dir empfohlen.
    Order By ist eine Funktionalität der Ergebnismenge, es kann also nur als letztes ein einziges Mal verbrutzelt werden. Order By auf Subselects, wie von Dir zuerst probiert, machen überdies logisch keinen Sinn, Du willst ja gerade durchgängig sortiert haben.

    mfg

    Dieter Bender

    Zitat Zitat von horst
    Nachtrag,

    dieses SQL funktioniert.

    SELECT DISTINCT EKDNR, EANDATE, EANTIME, EUSER, ENPATH, ENEMPF FROM
    emfaxhp WHERE ekdnr = 1124002 UNION ALL SELECT DIKDNR, DIEANDATE,
    DIEEANTIME, DIUSER, DIDESC, DIOBJ FROM divobjp WHERE dikdnr =
    1124002 ORDER BY 2 desc
    SELECT-Anweisung vollständig verarbeitet.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  11. #11
    Registriert seit
    Jun 2001
    Beiträge
    31
    Hallo Dieter,

    ja klar, macht ja auch Sinn.

    Das Sql funktioniert aber nicht, wenn ich statt -order by 2-
    - order by ekdnr- benutze.
    Ausserdem müssen wohl beim Union die Felder aus den einzelnen
    Subselects in gleicher Reihenfolge und von der gleichen Art sein.
    Ich kann also nicht bei unterschiedlichen Satzformaten - alle - Felder auswählen.

    File -A- : Kdnr 7 s 0
    name 30
    File -B- : Kdnr 7s 0
    name 30
    info 50.

    Gruss

    Horst

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo Horst,


    Zitat Zitat von horst
    Hallo Dieter,

    ja klar, macht ja auch Sinn.

    Das Sql funktioniert aber nicht, wenn ich statt -order by 2-
    - order by ekdnr- benutze.
    dann musst Du der Spalte im Select einen konsistenten Namen geben.

    Zitat Zitat von horst
    Ausserdem müssen wohl beim Union die Felder aus den einzelnen
    Subselects in gleicher Reihenfolge und von der gleichen Art sein.
    Ich kann also nicht bei unterschiedlichen Satzformaten - alle - Felder auswählen.

    File -A- : Kdnr 7 s 0
    name 30
    File -B- : Kdnr 7s 0
    name 30
    info 50.

    Gruss

    Horst
    das geht natürlich bei Rekord Löffel Exzess auch nicht, wenn Du da aus file B gelesen hast, dann gibt es das Feld info dort trotzdem nicht und Du musst sogar aufpassen, dass Du da keinen Müll verarbeitest.
    Ansonsten ist SQL für Datenbanken und nicht für sequentielle und ungeordnete Haufen gedacht. Wenn Du sogenannte Multimember Dateien (hier haben ein paar Leute das Konzept nicht verstanden, das von der 370 kommt) oder Dateinen mit mehreren Satzformaten hast, dann musst Du zuerst und am dringendsten Deine Datenhaltung überarbeiten ehe Du überhaupt eine Datenbank hast und dann kannst Du auch elegant mit SQL daran gehen die Daten zu verarbeiten. SQL sieht eine Table immer als eine Menge von gleich strukturierten Daten an, bei denen jedes einzelne Attribut (Feld) selbstredend auch einen definierten Typ hat, der bei allen Operationen auch geprüft wird.

    mfg

    Dieter Bender
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

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, 13:18
  2. Abfrage nach <> Ziffern in SQL
    By behmer in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-05-06, 12:52
  3. sql abfrage
    By steven_r in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 17-05-06, 15:49
  4. Problem bei Abfrage bei Imbedded SQL
    By cbe in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 08-06-05, 16:21
  5. sql abfrage mit substring
    By juergenkemeter in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 17-11-04, 14:32

Berechtigungen

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