-
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
-
Hallo Horst,
klare Frage => klare Antwort: ja
mfg
Dieter Bender
 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.
-
Hallo Dieter,
vielen Dank für die schnelle Antwort.
Noch eine klare Frage - Wie wäre es mit einem kleinen Beispiel ??
Gruss
Horst
-
ohne worte
nun bin ich ja mal auf die antwort gespannt....
-
Hallo Horst,
wie wär's mit:
select ... from Datei A
union
select ... from Datei B
union ...
order by datum desc
Dieter Bender
 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
-
Hallo Dieter,
klappt prima. Nur Order by wird nicht angenommen.
Gruss
Horst
-
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 von horst
Hallo Dieter,
klappt prima. Nur Order by wird nicht angenommen.
Gruss
Horst
-
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
-
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.
-
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 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.
-
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
-
Hallo Horst,
 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 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
Similar Threads
-
By AS400-Anfänger in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 27-06-06, 13:18
-
By behmer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 29-05-06, 12:52
-
By steven_r in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 17-05-06, 15:49
-
By cbe in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 08-06-05, 16:21
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks