[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    53

    Datenänderung mit SQL

    Hallo,

    ich habe folgendes Problem, in einer Datenbank stehen Kundenummer, .... und auch die Vertreternummer, es muss aus einer Tabelle (Kundennummer, neue Vertreternummer) der Kundenummer die neue Vertreternummer zugeordnet werden, alle anderen Daten müssen bleiben, wie geht das per SQL ?

    dnake an alle eric

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    update KundenTabelle k
    set k.kundenNummer = (select v.vertreternummer
    from vertreter v
    where v.kundenNummer = k.kundenNummer)

    D*B

    Zitat Zitat von Eric Beitrag anzeigen
    Hallo,

    ich habe folgendes Problem, in einer Datenbank stehen Kundenummer, .... und auch die Vertreternummer, es muss aus einer Tabelle (Kundennummer, neue Vertreternummer) der Kundenummer die neue Vertreternummer zugeordnet werden, alle anderen Daten müssen bleiben, wie geht das per SQL ?

    dnake an alle eric
    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
    Aug 2001
    Beiträge
    2.928
    Code:
    update KundenTabelle k
    set k.kundenNummer = (select v.vertreternummer
    from vertreter v
    where v.kundenNummer = k.kundenNummer)
    Das setzt allerdings voraus, dass es auch zu jeder Kunden-Nr. genau eine Vertreter-Nr. gibt. Sollte nicht für jede Kunden-Nr. eine Vertreter-Nr. vorhanden sein, geht dieses Statement schief!

    PHP-Code:
    update KundenTabelle k                                     
           set k
    .KundenNummer Coalesce((select Distinct v.VertreterNummer         
                                                from Vertreter v               
                                                where k
    .KundenNummer v.VertreterNummer), 
                                           
    k.KundenNr
    Oder besser

    PHP-Code:
    update KundenTabelle k                                                
           set k
    .KundenNummer = (select Distinct v.VertreterNummer         
                                       from Vertreter v               
                                       where k
    .KundenNummer v.VertreterNummer)    
           
    where exists (select *                       
                           
    from KundenTabelle C                           
                           where k
    .KundenNr c.KundenNummer
    Birgitta
    Birgitta Hauser

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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... schief gehen tut, wenn man mehr als eine Vertreternummer zuordnen will, deshalb sollte man logischerweise nur eine in der Zuordnungstabelle haben, was man über eine unique constraint absichern kann, das where exists hilft da nix.
    Was das coalesce angeht, da kann man über besser geteilter Meinung sein und wir sind da wohl unterschiedlicher, was zuweilen vorkommt. Aus der Sicht des Datenbankdesigns handelt es sich bei der Vertreternummer um eine typische Foreign Key Beziehung und da gibt es gute Gründe null Values zuzulassen, damit man eine referential constraint einrichten kann ohne sich eine Dummy Vertreter einzurichten, oder gar bei nicht vorhanden sein des Vertreters 0 oder blank in ein Foreign Key Feld reinzuschreiben.
    Was das where exists angeht, naja, da gibt die Aufgabenstellung zuwenig her, um das exakt einzuordnen, ob die entsprechende Datei komplett ist...

    D*B



    Zitat Zitat von B.Hauser Beitrag anzeigen
    Code:
    update KundenTabelle k
    set k.kundenNummer = (select v.vertreternummer
    from vertreter v
    where v.kundenNummer = k.kundenNummer)
    Das setzt allerdings voraus, dass es auch zu jeder Kunden-Nr. genau eine Vertreter-Nr. gibt. Sollte nicht für jede Kunden-Nr. eine Vertreter-Nr. vorhanden sein, geht dieses Statement schief!

    PHP-Code:
    update KundenTabelle k                                     
           set k
    .KundenNummer Coalesce((select Distinct v.VertreterNummer         
                                                from Vertreter v               
                                                where k
    .KundenNummer v.VertreterNummer), 
                                           
    k.KundenNr
    Oder besser

    PHP-Code:
    update KundenTabelle k                                                
           set k
    .KundenNummer = (select Distinct v.VertreterNummer         
                                       from Vertreter v               
                                       where k
    .KundenNummer v.VertreterNummer)    
           
    where exists (select *                       
                           
    from KundenTabelle C                           
                           where k
    .KundenNr c.KundenNummer
    Birgitta
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  5. #5
    Registriert seit
    Sep 2005
    Beiträge
    53

    Thumbs up DANKE

    Hallo,

    danke, wed das diese Woche probieren.

    danke eric

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  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
  •