[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Mar 2015
    Beiträge
    22

    Thumbs up SQL-Update mit Subselect der selben Tabelle

    Hallo!

    Folgendes Problem - ich habe eine Tabelle die sieht wie folgt aus:

    [Artikel]
    [Liste] [Pneu] [Palt]
    aaaa 1 12
    aaaa 10 14 28


    Ich möchte jetzt in einem SQL-Statement das Feld [Palt] wenn
    [Liste = 1] mit dem Feld [Pneu] wenn
    [Liste = 10] updaten wenn [Artikel] = aaaa .

    Hoffe irgendwer versteht mein Problem so wie ich´s beschrieben hab

    Bekomme leider immer den Fehler ...Nullwerte nicht zulässig ....

    Geht das überhaupt ??

    Vielen dank für Euer Feedback,

    RK

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Zeig doch einfach mal wie Dein SQL-Statement aussieht

    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

  3. #3
    Registriert seit
    Mar 2015
    Beiträge
    22
    Sorry....ist natürlich auch eine Möglichkeit ;-)

    update File1 a set a.palt = (select b.pneu
    from File1 b where a.artikel = b.artikel and
    b.liste = 10) where a.liste = 1

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    PHP-Code:
    update File1 a 
    set a
    .palt = (select b.pneu
                    from File1 b 
                   where a
    .artikel b.artikel
                     
    and b.liste 10
    where a.liste 1
    and exists (Select from File1 b
                 where a
    .artikel b.artikel and b.liste 10
    Versuche es mal damit

    Gruß
    Ronald

  5. #5
    Registriert seit
    Mar 2015
    Beiträge
    22
    Vielen Dank Ronald - es funkt!

    LG Roman

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wie immer gibt's natürlich mehrere Lösungen:

    update File1 a
    set a
    .palt = coalesce((select b.
    Pneu
    from File1 b
    where a
    .artikel = b.
    Artikel
    and b.liste = 10
    ), a.palt)
    where a.liste =
    1
    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

  7. #7
    Registriert seit
    Mar 2015
    Beiträge
    22
    So viele Lösungen ... und keine hab ich gefunden

    Ebenfalls besten Dank,

    LG Roman

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Das Problem ist:
    Der scalare Subselect kann auch "Nichts" als Ergebnis finden.
    Fatal an dieser Stelle ist, wenn das Zielfeld NULL erlaubt, wird ggf. der NULL-Inhalt gesetzt obwohl man dies vielleicht gar nicht wollte.
    Entweder man stellt den Ursprungswert her (coalesce) oder wählt die Daten auf die einzuschränkenden Sätze incl. des skalaren Subselects aus.

    Nun hängt es von den Indizes ab, welcher Befehl schneller ist.
    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. SQL Subselect
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 21-02-15, 18:29
  2. Rechenformeln aus Tabelle ?
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 20-01-14, 12:40
  3. Typ DATE in SQL-Tabelle
    By Melanie in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 13-02-03, 10:30
  4. EXCEL-Tabelle auf AS/400
    By Steven in forum IBM i Hauptforum
    Antworten: 12
    Letzter Beitrag: 25-10-02, 10:32
  5. JPEG in DB/2-Tabelle
    By chrisi in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 07-12-01, 13:39

Berechtigungen

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