[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    444

    SQL with mit update/delete/insert

    Hallo zusammen,

    ich habe im SQL den with bereits verwendet. Allerdings nur mit anschließendem SELECT. Könnte mir jemand die Syntax nennen wenn ich einen Update Delete oder Insert machen möchte oder eine Lektüre wo ich das finden kann.

    Vielen Dank.

    Viele Grüße Harald

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    WITH-Konstrukte sind nur Vereinfachungen bei der Verwendung von "derived Tables".
    Man kann also
    select * from (Select * from MyFile) x
    inner join (Select * from Myfile2) y on x.Key = y.Key
    verwenden.
    Somit kann man eben auch bei Update/delete in der Where-Klausel mit scalaren Subselects umgehen:
    update/delete .... MyFile x
    where exists (
    select * from (select * from MyFile) a inner join (select * from MyFile2) b on ...
    where x.Key = a.Key ...
    )

    Beim Insert sieht es nicht viel anders aus:
    insert into MyFileX
    select ....
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Common Table Expressions (WITH ...) sind Bestanddteil des SELECT-Statements und nicht direkt des UPDATE oder DELETE Statements.
    In Updates ist nur der FULL-Select zulässig, d.h. keine Common Table Expressions. Du ähnliches wie mit CTEs mit verschachtelten Sub-Selects erreichen.
    Wenn Du einen Insert auf der Basis eines Select machst, kannst Du Common Table Expressions verwenden.
    Insert into Table
    (With X as ...
    Select ...)

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  4. #4
    Registriert seit
    May 2004
    Beiträge
    444
    OK danke, werde ich probieren.

    Ich dachte ich könnte auch vor dem Update bereits eine Teilauswahl machen und diesen dann in der WHERE Klausel verwenden.

    Nach der Art.

    with x as
    select * from Tabelle1 where Status = 'V'

    with y as
    select * from Tabelle2 where Status = 'X'

    und dann

    update Tabelle3 set Status = 'V' where exists (select * from x where ID = x.ID) or
    exists (select * from y where ID = y.ID)

    OK, ist jetzt kein gutes Beispiel, da die oberen SELECTS ziemlich einfach sind. Mir ging es nur um die Syntax wie so was anzugeben ist.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.236
    Hängt davon ab, wie komplex die Abfrage ist.
    Der einfachste Weg ist natürlich:

    update myfile set F1=10
    where F1=0

    In der Where-Klausel sollte man dann Exists verwenden, wenn der Update von Inhalten einer anderen Datei abhängig ist. Und dabei ist jeder Komplexitätsgrad erlaubt (Group by, from (select ), außer With und Order).
    Vielleicht nicht jeder, da ich glaube, dass immer noch nicht mehr als 32 Tabellen in einem Select vorkommen können, aber vielleicht ist diese Erweiterung ja auch an mir vorbeigegangen.
    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. Datei Delete wiederherstellen
    By jojoschluckfirma in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 13-06-17, 13:35
  2. KDS Delete RNF7072
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 14-02-17, 16:26
  3. delete von 100 Mill. Datensätze
    By tt0ny in forum IBM i Hauptforum
    Antworten: 14
    Letzter Beitrag: 07-12-15, 07:14
  4. SQL INSERT if not exist then update
    By chrisonline in forum NEWSboard Programmierung
    Antworten: 12
    Letzter Beitrag: 29-07-15, 11:33
  5. SQLRPG Delete im Select
    By svit in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 26-08-14, 17:26

Berechtigungen

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