PDA

View Full Version : Union in Query?



Klaus Söllner
24-09-03, 08:32
Uns stellt sich aktuell das Problem, auf den Inhalt zweier physischer Dateien gleichen Aufbaus gemeinsam über Query zuzugreifen.

Der Weg über eine DDS-beschriebene logische Datei, die beide Quelldateien vereint, geht nicht, da in Query jeweils nur ein Satzformat ergo nur eine Quelldatei geöffnet wird. (Oder gibt es einen Trick?)

Eine logische Datei über SQL - CREATE VIEW mit der Anweisung UNION zu erstellen, ist laut den Informationen hier im Forum erst ab R5V2 möglich. Wir werden jedoch noch länger bei V5R1 bleiben müssen.

Weiss jemand eine Lösung?

Vielen Dank

Heinz Bretthauer
24-09-03, 08:54
Hallo,

man kann PFILE zweimal in der LF angeben:

R FORMAT1.........PFILE(FILE1)
........................PFILE(FILE2)

K KEY1
K KEY2
K KEY3


Nachteil solcher Dateien beim Query:

Es wird bei manchen Abfragen eine temporäre Kopie der Datenbestände erzeugt, was natürlich eine Weile dauern kann.

Viele Grüße
Heinz Bretthauer

B.Hauser
24-09-03, 09:29
Hallo Klaus,

die einzige Möglichkeit, die ich im Query kenne, sind mehrere aufeinanderfolgende Queries.

Das 1. erstellt eine Arbeits-Datei, in der die Sätze aus der 1. Datei gespeichert werden.
Das 2. fügt die Sätze aus der 2. Datei in die Arbeits-Datei ein.
Das 3. verarbeitet die Arbeits-Datei.

Aber zum Glück gibt es ja den Query Manager (STRQM)
Erstelle ein QM-Query im SQL: Beispiel


select
-- Spalten
A.Feld1, A.Feld2, A.Feld3
-- Tabellen
FROM "MYLIB"/"MYFILE1" A
-- Zeilenauswahl
WHERE (A.Feld1 <> ' ')
Union
Select
-- Spalten
B.Feld1, B.Feld2, B.Feld3,
-- Tabellen
FROM "MYLIB2"/"MYFILE2" B
-- Zeilenauswahl
WHERE (B.Feld3 <> ' ')


Mit STRQM kannst Du das Query dann ausführen:


STRQMQRY QMQRY(MYLIB/TESTUNION)


Birgitta

Klaus Söllner
24-09-03, 09:52
Vielen Dank an Herrn Bretthauer - der Trick mit den beiden direkt aufeinander folgenden PFILE Klauseln funtioniert!

Bisher haben wir mangels besseren Wissens stets pro PFILE auch einen eigenen Satzformatnamen angegeben, und uns damit anscheinend selbst unnötig Steine in den Weg gelegt.

Danke für die prompte Hilfe und schöne Grüße zurück!