-
Zwei Tabellen vergleichen und erste Aktualisieren
Hallo,
ich brauche mal wieder ein wenig gedankliche Unterstützung.
Ich versuche ein Vorgehen zu entwickeln, um verlässlich Daten von einer Datei in eine andere Datei zu schreiben.
Ich versuche das mal an einem Beispiel zu erklären:
Ich habe zwei Tabellen:
Haupttabelle:
1. Feld 2. Feld 3. Feld 4. Feld
A B C D
Updatetabelle:
1. Feld 2. Feld 3. Feld 4. Feld
A B G H
W X Y Z
Nun erwarte ich folgendes Vorgehen / Ergebnis von meiner Lösung.
Der 2. Datensatz in der Updatetabelle wird in die erste Tabelle geschrieben, also neu angelegt.
Aus dem 1. Datensatz der Updatetabelle werden die Werte in den ersten Datensatz der Haupttabelle geschrieben, die sich unterscheiden.
Die Haupttabelle wird also im Ergebnis der Updatetabelle entsprechen. Dabei kann es jedoch sein, dass die Haupttabelle einige 1000
Datensätze enthält. Der Schlüssel ist für beide Tabellen das 1. Feld.
Am liebsten wäre mir eine Lösung per SQL, aber hier bedarf es wohl noch etwas mehr Aufwand.
Für ein wenig Hilfe wäre ich sehr dankbar.
Gruß
Matthias
-
Vielleicht noch zur Info, ich kann leider nur mit CL und interaktivem SQL umgehen.
QMQRY in CL integrieren schaffe ich auch noch.
-
Hierfür sind 2 verschiedene SQL's erforderlich, da SQL keinen UpdateInsert kennt.
1.
Update filea a
set a.f2 = (select b.f2 from file b where a.f1=b.f1)
where a.f1 in (select b.f1 from file b)
2.
insert into file a
select f1, ... from file b
where b.f1 not in (select c.f1 from file c)
PS:
Mit meinem SQLCPY geht so was spielend leicht
-
Kannst du mir noch ein paar Infos zu dem SQLCPY geben?
-
Nunja, in der F1-Hilfe ist eigentlich alles erklärt (nach Installation).
Aber das wesentliche findest du hier:
Software
-
Hallo,
ich versuche meine Lösung noch ein wenig zu erweitern und möchte dazu einen SQL bauen, der das Update auf verschiedene Files machen kann, unabhängig von der Anzahl der Felder. So könnte ich dies als eine Art Modul verwenden und muss es nicht für jede Datei individuell aufbauen.
 Zitat von Fuerchau
1.
Update filea a
set a.f2 = (select b.f2 from file b where a.f1=b.f1)
where a.f1 in (select b.f1 from file b)
Der SQl sollte dabei etwas so aussehen, wie schon vorgeschlagen, aber mit mehreren SET statements. Das Problem für mich ist nun aber, ich weiß nie wie viele Felder die Tabelle haben kann. Lediglich das Maximum kann ich benennen.
Hat jemand eine Idee, wie ich das machen könnte?
Vielen Dank.
Matthias
-
ich denke da mußt du mit dynamischen SQL-Statements arbeiten. Weißt du denn an einer stelle des Programms (nicht im SQL-Statement), um welche Felder es sich handelt?
-
Eigentlich ja, wenn ich das Programm aufrufe übergebe ich die entsprechende Datei als Parameter. Dann könnte man die Zahl ja auslesen.
Allerdings, dynamisches SQL ist mir fremd. Das bedeutet ja auch HLL (RPG), eine solche beherrsche ich leider nicht.
Gruß
Matthias
-
Um was für ein Programm handelt es sich denn? Um ein RPG-Programm??
Beispiele für dynamisches SQL findest du hier im Forum:
-Stichwort EXECUTE IMMEDIATE mit SQL Befehl als String in einer Variablen
-Alternativ DECLARE, PREPARE, EXECUTE
-
Du kannst im QMQRY beliebge Variablen eingeben. Allerdings darf die Länge jeder einzelnen Variable 55 nicht übersteigen.
Du kannst also folgendes tun:
&VAR1&VAR2&VAR3....&VAR10
Zu Laufzeit strickst du deinen SQL im CLP zusammen und übergibst per SETVAR den Inhalt in 55er Blöcken:
dcl &mysql *char 550
chgvar &mysql ('update ....')
strqmqry ...
setvar ((VAR1 %sst(&mysql 1 55) (VAR2 %sst(&mysql 56 55) ... (VAR10 %sst(&mysql 496 55))
-
Hallo,
ich habe jetzt mal einen ersten SQL gebaut, der das Einfügen in Abhängigkeit von einer anderen Tabelle erledigt. Ist noch etwas erweitert zu der obigen Anforderung, aber es tut das, was ich erwarte.
INSERT INTO &RELEASE/&FILE
SELECT * FROM &FILE
WHERE &FILE.&FIELD in (Select &FIELD from CFWRLSSET/&FILE)
Leider erhalte ich nach der für mich scheinbar korrekten Ausführung folgenden Fehler im Joblog:
No query data to SAVE.
SAVE DATA command ended due to error.
STRQMQRY command failed.
Weiß jemand, was da nicht stimmt?
-
Hast du die ganzen Variablen auch korrekt gefüllt ?
Similar Threads
-
By e_sichert in forum IBM i Hauptforum
Antworten: 21
Letzter Beitrag: 28-11-06, 19:43
-
By remo2010 in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 24-11-06, 15:24
-
By Stoeberl in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 13-11-06, 13:30
-
By peter.kinne in forum IBM i Hauptforum
Antworten: 7
Letzter Beitrag: 29-09-06, 12:33
-
By CAL in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 23-06-06, 09:03
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