[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2002
    Beiträge
    16

    Update per SQL

    Hallo *all,

    habe folgendes Problem mit einer UPDATE Anweisung im interaktiven SQL:

    Ich möchte das Feld KVB34 ( Kundenklasse) in der Datei SVAKVB mit den entsprechenden Werten aus der Datei Ranking aktualisieren.
    Soll heissen: die Kundenklasse in der ersten Datei sollen der Klasse aus der zweiten Datei angepasst werden.
    Beide Dateien haben keine doppelten Sätze.
    Schlüssel ist die Kundennummer.

    UPDATE
    mylib/svakvb a
    set a.kvb34 =
    (SELECT b.rank2
    from mylib/ranking b where
    b.rank1 = a.kvb02 and
    a.kvb01 = '01' and
    a.kvb34 <> b.rank2 )

    ich kriege aber immer den Fehler:
    Nullwerte für Spalte oder Variable KVB34 nicht zulässig.
    - wie kann ich das umgehen ????

    Vilen Dank für Eure Hilfe.

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    die Fehlermeldung sagt doch genau, was nicht passt: es sind Sätze in der ersten Datei (die mit dem update) die in der zweiten Datei kein Pendant haben - was soll denn bei denen geschehen???

    mfg

    Dieter Bender

    Zitat Zitat von jkuetema
    Hallo *all,

    habe folgendes Problem mit einer UPDATE Anweisung im interaktiven SQL:

    Ich möchte das Feld KVB34 ( Kundenklasse) in der Datei SVAKVB mit den entsprechenden Werten aus der Datei Ranking aktualisieren.
    Soll heissen: die Kundenklasse in der ersten Datei sollen der Klasse aus der zweiten Datei angepasst werden.
    Beide Dateien haben keine doppelten Sätze.
    Schlüssel ist die Kundennummer.

    UPDATE
    mylib/svakvb a
    set a.kvb34 =
    (SELECT b.rank2
    from mylib/ranking b where
    b.rank1 = a.kvb02 and
    a.kvb01 = '01' and
    a.kvb34 <> b.rank2 )

    ich kriege aber immer den Fehler:
    Nullwerte für Spalte oder Variable KVB34 nicht zulässig.
    - wie kann ich das umgehen ????

    Vilen Dank für Eure Hilfe.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    UPDATE
    mylib/svakvb a
    set a.kvb34 =
    (SELECT b.rank2
    from mylib/ranking b where
    b.rank1 = a.kvb02 and
    a.kvb01 = '01' and
    a.kvb34 <> b.rank2 )
    where b.rank1 = a.kvb02 and
    a.kvb01 = '01' and
    a.kvb34 <> b.rank2
    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
    Feb 2002
    Beiträge
    16

    Update mit SQL

    Hallo BenderD,

    ok Du hast gewonnen...sehe den Wald vor lauter Bäumen nicht.

    Der Update funktioniert natürlich, wenn überall ein Treffer gelandet wird.
    Aber wie formuliere ich jetzt das "Überlesen" wenn kein Treffer gelandet wird? Dann soll eben "einfach" der nächste Satz genommen werden.


    Bin für jeden Hinweis dankbar.

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    das ist ja nicht selbstverständlich, es könnte ja auch sein, dass man dann sonstwas da reinschreiben will.
    UPDATE
    mylib/svakvb a
    set a.kvb34 =
    coalesce(
    (SELECT b.rank2
    from mylib/ranking b where
    b.rank1 = a.kvb02 and
    a.kvb01 = '01' and
    a.kvb34 <> b.rank2 )
    , a.kvb34
    )
    müsste gehen.

    mfg

    Dieter Bender
    Zitat Zitat von jkuetema
    Hallo BenderD,

    ok Du hast gewonnen...sehe den Wald vor lauter Bäumen nicht.

    Der Update funktioniert natürlich, wenn überall ein Treffer gelandet wird.
    Aber wie formuliere ich jetzt das "Überlesen" wenn kein Treffer gelandet wird? Dann soll eben "einfach" der nächste Satz genommen werden.


    Bin für jeden Hinweis dankbar.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Feb 2002
    Beiträge
    16

    Update mit SQL

    Hallo BenderD,

    1a Lösung genau das habe ich gesucht.
    SQL ist eben doch eine tolles Tool, wenn man's denn beherrscht

    Vielen Dank nochmals.

    Gruss Jens

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.243
    Allerdings würde ich meine Lösung vorziehen, durch die Where-Bedingung im Update beschränkt sich die Anzahl Sätze auf vorhandene Daten.
    Mit Coalesce (oder VALUE) wird ein Datensatz unnötigerweise mit dem selben Inhalt upgedatet. Wenn man dann noch Journalisierung oder Trigger hätte ...
    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. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  2. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  3. Kopieren per SQL
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 18-07-06, 09:36
  4. Teildateien per SQL auflisten
    By Nennewitz in forum NEWSboard Programmierung
    Antworten: 16
    Letzter Beitrag: 28-06-06, 13:49
  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
  •