[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Thema: SQL Update

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044

    SQL Update

    Hi *all
    ich habe eine Datei mit Key + datum(8N, jjjjmmtt)
    und eine 2. Datei mit Key, Feld und Jahr Monat Tag.

    Nun will ich das Datum der 1. Datei als Update in die 2 Datei schreiben

    wie weise ich das am sinvollsten zu ?

    update DATEI2 a set Jahr = (select
    Dec(substr(datum, 1, 4)) from DATEI1 b where a.key1 =
    b.key1)
    where exists(select * from DATEI1 c where
    a.key1= c.key1)

    und das ganze 3 mal ? oder geht es einfacher
    Danke
    Robi

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    hi,

    probiers mal ohne der letzten where-klausel

    Code:
    update DATEI2 a set Jahr = (select
    Dec(substr(datum, 1, 4)) from DATEI1 b where a.key1 =
    b.key1)
    lg andreas

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nun ja, das "exists" ist schon erforderlich, wenn der Key in Datei1 mal nicht vorhanden ist.

    Aber ansonsten ist das schon korrekt, wenn du in der Datei 2 die Felder Jahr/Monat/Tag in 3 Feldern hast, benötigst du auch 3 Subselects.
    Dies kannst du aber auch in 1 Befehl machen:

    update myfile set
    F1 = (Select ...)
    ,F2 = (select ...)
    :
    where ...

    Ab V5R4 gilt wohl auch fogende Syntax:

    Update myfile set
    (F1, F2, ...) =
    (select X1, X2, X3 from ... where ...)
    where ...
    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
    Jun 2001
    Beiträge
    2.044
    Ohne exists geht es nicht, Null Fehler

    Die V5R4 Syntax war mir auch grade wieder eingefallen
    Nur läuft das bei 490.000 zu ändernden Sätzen bei 2 Mio in der Datei2 (es sind 4 Key Felder) > 3 Stunden

    da ist RPG schneller

    Danke
    Robi

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Da würde ich mir mal ansehen, ob es für die Keyfelder auch Indexe ohne Select/Omit gibt bzw. die Key-Definitionen identisch sind !.
    3 Stunden ist definitiv zu lang.
    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

  6. #6
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Gibt es .
    die 'üblichen' Beschleuniger hab ich alle durch.
    Daher die Frage nach was anderem ...
    Danke
    Robi

  7. #7
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    sind das sql-tabellen?
    wenn nein, glaub ich sofort, dass es mit rpg schneller ist, da in dem fall die alte classic quere engine verwendet wird.

    werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ich könnte da noch mein SQLCPY anbieten.
    Dieses bietet auch Update-Funktionen.
    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

  9. #9
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Zitat Zitat von andreaspr@aon.at Beitrag anzeigen
    werden von sql auch die indices wirklich verwendet? entweder mittelds debug oder visual explain (im iseries navigator) nachschauen, was sql da wirklich macht bzw. wo da der flaschenhals ist.
    Danke, das läuft bei mir unter den 'üblichen' Beschleunigern
    Das ist alles im grünen Bereich

    Und da das RPG pgm mittlereile auch schon durch ist ...

    Danke sehr
    Robi

  10. #10
    Registriert seit
    Jul 2005
    Beiträge
    1.053
    Werfe mal Cobol in die Runde

    Gruß AS400.lehrling

  11. #11
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    nur der neugier halber, sind das sql-tabellen gewesen?

  12. #12
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Hallo Robi,

    ist zwar schon vorbei, aber folgendes wäre evtl. auch gegangen:

    update DATEI2 a set Jahr = coalesce((select Dec(substr(datum, 1, 4)), Jahr) from DATEI1 b where a.key1 =
    b.key1)

    dann spart man sich den EXISTS.
    (Ich mag die coalesce-Funktion einfach, vor allem wegen dem Namen...)

    Gruß, Christian

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  3. SQL Update über 2 i5 Systeme
    By daniel.ludwig in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 21-07-06, 12:41
  4. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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