-
Das Problem ist tatsächlich, dass du in DDS die Bedingung nicht schachteln kannst.
Die 2. Bedingung wird, wie schon gesagt nie zutreffen.
Für die 2. Bedingung, wenn da die anderen Felder nicht benötigt werden, musst du jedes mal wieder mit dem "S" für "or" beginnen.
Für deine 120 muss aber auch "tests=0 and tefa=1" gelten.
-
Stelle vor den anderen TEST11 auch noch das 'S' für SELECT dann sollte es gehen...
Ansonsten ist ein CREATE VIEW auch eine gern genomnene Sache...
-
Views haben keinen Schlüssel, deshalb sind sie für native I/O nur eingeschränkt einsetzbar.
Wenn KingOfKing auf Release 6.1 oder höher wäre, würde ich einen (derived and sparsed) SQL-Index vorschlagen.
Bei diesen Indices können Spalten ausgewählt, neue Spalten generiert werden (u.a. auch unter Verwendung von skalaren funktionen).
Daneben können WHERE-Bedingungen (das Äquivalent zu SELECT/OMIT-Anweisungen nur mächtiger, da die SQL-Syntax verwendet wird und damit u.a. auch Klammern gesetzt werden können) hinzugefügt werden.
SQL Indices können zwar in SQL-Statements nicht angegeben werden, wohl aber mit native I/O wie jede beliebige geschlüsselte DDS-beschriebene logische Datei verwendet werden.
Birgitta
-
Tja, das mit dem S vor den anderen hatte ich schon probiert, führt aber zu der Fehlermeldung "Doppelte Schlüsselwerte".
Da ich die Datei in Cobol bearbeiten will, muß ich eine LF haben.
Ansonsten müßte ich den Zugriff auf SQL umstellen.
Habe mir zwar den interessanten Vortrag von Herrn Bender angehört, aber noch keine Zeit das umzusetzen.
Ich finde es aber erstaunlich das es nicht möglich ist im DDS zu sagen "Nur die Sätze auf die alle Bedingungen zu treffen zu selektieren".
Nun ja, muß ich halt in Cobol schauen wie ich es mache.
GG
-
Ich finde es aber erstaunlich das es nicht möglich ist im DDS zu sagen "Nur die Sätze auf die alle Bedingungen zu treffen zu selektieren".
DDS ist eine veraltetete Technologie und wird schon seit mindestens 4 Releasen nicht mehr weiterentwickelt. Deshalb haben wir ja die ganzen Neuerungen in Release 6.1 für die SQL Indices erhalten. (Übrigens unter 6.1 war diese Erweiterung in erster Linie nur für native I/O erst mit 7.1 konnte dann die SQE diese Zugriffspfade teilweise verwenden!).
Birgitta
-
 Zitat von KingofKning
Ansonsten müßte ich den Zugriff auf SQL umstellen.
...
Nun ja, muß ich halt in Cobol schauen wie ich es mache.
GG
... das mit dem SQL ist sicherllich die nachhaltigere Lösung.
Alternativ gibt es noch zwei Varianten:
- OPNQRYF
- alle lesen und filtern
@OPNQRYF: ist zwar weniger schön als SQL und ein wenig tricky, aber ich würde das logischen mit select ommit allemal vorziehen, insbesondere dann, wenn ich viele solcher Ungetüme kriege und im Mix mit SQL fahre.
Wenn die Selektivität unter 20 % (vieleicht auch 10%) liegt, würde ich insbesondere bei read only (wo man ja blocken kann) alles lesen und durch einen Filter rattern lassen, das ist dann auch am effektivsten.
D*B
-
Wenn doppelte Schlüssel vorkommen können, lass das UNIQUE doch weg.
-
Es gibt nicht nur S für SELECT sondern auch noch O für OMIT.
-
Hallo GG,
mir ist nicht ganz klar, was Du erreichen willst.
Möchtest Du vielleicht so etwas:
K TETENR
S TEST11 COMP(EQ 50)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 53)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 58)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 100)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 101)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
-
Ich wollte erreichen das fogendes selektiert wird:
A*____ S TESTS COMP(EQ 0) AND
A*____ TEFA COMP(EQ 1) AND
A* ____ TEST01 COMP(GE 20) AND
A* ____ TEST01 COMP(LE 699)
AND
{A* ____ S TEST11 COMP(EQ 50)_OR
A*____ TEST11 COMP(EQ 53)___OR
A*____ TEST11 COMP(EQ 58)___OR
A*____ TEST11 COMP(EQ 100)__OR
A*____ TEST11 COMP(EQ 101) }
GG
-
aber dann passt das doch, was ich geschrieben habe, oder nicht?
K TETENR
S TEST11 COMP(EQ 50)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 53)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 58)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 100)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
S TEST11 COMP(EQ 101)
TESTS COMP(EQ 0)
TEFA COMP(EQ 1)
TEST01 COMP(GE 20)
TEST01 COMP(LE 699)
-
Hallo,
danke für die Hilfe, sobald ich mal wieder Luft habe werde ich das nochmal durchprobieren und Rückmeldung geben.
GG
Similar Threads
-
By KB in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 28-04-16, 14:42
-
By a.wojcik in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 06-02-14, 13:29
-
By TARASIK in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 19-09-02, 10:59
-
By LaLeLi in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 13-06-02, 12:41
-
By Schnichels in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 11-01-02, 13:45
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