[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    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
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  2. #2
    Registriert seit
    Nov 2007
    Beiträge
    79
    Kannst du mir noch ein paar Infos zu dem SQLCPY geben?

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    Nunja, in der F1-Hilfe ist eigentlich alles erklärt (nach Installation).

    Aber das wesentliche findest du hier:
    Software
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Nov 2007
    Beiträge
    79
    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 Zitat von Fuerchau Beitrag anzeigen
    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

  5. #5
    Registriert seit
    Apr 2004
    Beiträge
    105
    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?

  6. #6
    Registriert seit
    Nov 2007
    Beiträge
    79
    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

  7. #7
    Registriert seit
    Apr 2004
    Beiträge
    105
    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

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.790
    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))
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Verknüpfen von Tabellen mit SQL
    By e_sichert in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 28-11-06, 20:43
  2. Journaling für alle Tabellen eines Schemas einschalten
    By remo2010 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 24-11-06, 16:24
  3. DBCS Codepages vergleichen?
    By Stoeberl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-11-06, 14:30
  4. Daten vergleichen auf zwei verschiedenen Maschinen
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 29-09-06, 13:33
  5. Einzelne DB Tabellen sichern
    By CAL in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-06-06, 10:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •