-
keine doppelten Schlüssel in LF
Hi *all
Ist es möglich eine logische Datei zu erstellen, welche keine doppelten Schlüssel
enthält?
Die physiche Datei enthält doppelte Schlüssel
Die logische Datei soll mir aber nur jeweils
den ersten Satz (und nicht alle Sätze mit gleichem Schlüssel) anzeigen
-
Hallo muadeep,
ich würde das mit einem SETGT nach jedem READ lösen,
Gruß Robert
-
Hallo,
programmtechnisch könnte man dies ja
auch mit einer Gruppenwechsellogig
erledigen.
In beiden Fällen würde man sich ja
die logische ersparen.
Gruss Thomas
-
ups, sorry
ich habe ganz vergessen, daß ich daß ja
schon in der DDS-Beschreibung der logischen
Datei bräuchte!
-
Wenn die PF bereits doppelte Schlüssel enthält, ist es auch einer LF nicht mehr möglich, nur noch eindeutige Schlüssel zu verwalten.
Du kannst dies wirklich nur noch programmtechnisch lösen.
Anmerkung: Solltest du REUSEDLT(*YES) verwenden, ist nicht eindeutig gesichert, dass der 1. Satz in Keyfolge auch der zuerst erstellte Satz ist.
Übrigens: LF's lassen sich auch per SQL erstellen, siehe CREATE VIEW xxx for SELECT ....
Mittels "Group by" lassen sich dann auch eindeutige Schlüssel erstellen.
Diese LF läßt sich von RPG auch genauso verwenden. Wenn du diese dann liest und mittels gelesenem Schlüssel auf die PF per CHAIN zugreifst, erhältst du genau 1 Satz.
-
Hallo,
das mit den SQL Views und Record Löffel Exzess, das ist so eine Sache: die haben keine Sortierung, die Reihenfolge der Sätze überlässt man dann dem Datenbanksystem und das kann sich da auch unter einem Folgerelease anders entscheiden, was nicht unwahrscheinlich ist.
Ansonsten sorgt natürlich Group By und distinct dafür dass die Views dann read only sind; wobei distinct garnicht geht, da ja nur die Schlüssel gleich sind und bei group by muss man dann auch noch Spaltenfunktionen verwenden, damit man alle Felder mit reinbekommt.
Fazit: mit DDS und mit record Löffel Exzess stößt man hier an Grenzen, da bleibt nur die Programm technische Lösung; SETGT oder alle lesen mit Gruppenwechsel Logik gibt sich hierbei nicht viel - für einen Satz könnte der SETGT schneller sein, für alle eher der Gruppenwechsel, beidesmal sind die Unterschiede in der Nähe der Messbarkeit.
mfg
Dieter Bender
PS: Was ich nicht verstehe ist, warum man sich so einen Unfug antut (wobei das auch ein Softwarelieferant gewesen sein kann, der solchen Murks auch noch verkauft hat, Kompliment an die Marketing Abteilung!)
 Zitat von Fuerchau
Wenn die PF bereits doppelte Schlüssel enthält, ist es auch einer LF nicht mehr möglich, nur noch eindeutige Schlüssel zu verwalten.
Du kannst dies wirklich nur noch programmtechnisch lösen.
Anmerkung: Solltest du REUSEDLT(*YES) verwenden, ist nicht eindeutig gesichert, dass der 1. Satz in Keyfolge auch der zuerst erstellte Satz ist.
Übrigens: LF's lassen sich auch per SQL erstellen, siehe CREATE VIEW xxx for SELECT ....
Mittels "Group by" lassen sich dann auch eindeutige Schlüssel erstellen.
Diese LF läßt sich von RPG auch genauso verwenden. Wenn du diese dann liest und mittels gelesenem Schlüssel auf die PF per CHAIN zugreifst, erhältst du genau 1 Satz.
-
Eine Alternative wäre eine View mittels SQL zu erstellen.
z.B.:
CREATE VIEW MyLib/MyView
AS SELECT DISTINCT Field1, Field2, ... FieldN
FROM MyFile
(entspricht SETGT + READ)
oder
CREATE VIEW MyLib/MyView
AS SELECT Field1, Field2, ... FieldN
FROM MyFile
GROUP BY Field1, Field2, ... FieldN
entspricht Gruppen-Wechsel-Logik
SQL-Views können in SQL-Abfragen verwendet werden und damit ganz einfach z.B. mittels Embedded SQL in RPG verarbeitet werden.
Zu den programmtechnischen Anmerkungen ist folgendes zu sagen:
Die Variante mit SETGT READ ist wesentlich sinnvoller als eine Gruppenwechsel-Steuerung.
Im ersten Fall wird jeweils nur der 1.Satz des Schlüssels gelesen.
Im zweiten Fall werden alle Sätze gelesen und nur beim Gruppenwechsel erfolgt eine Aktion.
Birgitta
-
distinct in DDS
Interessant wäre allerdings die DDS Entsprechung für
CREATE VIEW MyLib/MyView
AS SELECT DISTINCT Field1, Field2, ... FieldN from table1 t1, table t2 where t1.fieldx=t2.fieldx and t1.fieldy='xx'
Dies ginge nämlich dann mit JOIN und COMP. Jedoch weiß ich nicht, wie man das distinct in DDS angeben kann.
Similar Threads
-
By Mr.iSeries in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 25-01-07, 08:46
-
By alexander may in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 08-12-05, 19:25
-
By jogisarge in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 06-07-05, 10:23
-
By Tobse77 in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 22-06-05, 09:02
-
By Robi in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 06-04-05, 16:59
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