[NEWSboard IBMi Forum]

Thema: Sql-Update

Hybrid View

  1. #1
    Registriert seit
    May 2004
    Beiträge
    184

    Sql-Update

    Hallo Kollegen,
    ich habe mal wieder ein Problem.
    Ich möchte aus einer Lieferantendatei ein Feld aus der Artikeldatei angleichen. Da ich nur die interne Artikel_nr(nicht in der Lieferantendatei vorhanden) als eindeutige ID habe. Bekomme ich bei meiner folgenden SQL Anweisung die Fehlermeldung das im Ergebnisbereich mehr als eine Zeile enthalten ist. Leider habe ich keine für mich verständliche Hilfe im Forum gefunden (Sorry !)
    PHP-Code:
     update xxxlib/DateiA set Feld1 = (select             
    DateiB
    .Feld2 from xxxLIB/Dateib WHERE                   
    DateiA
    .MANDANT_NR DateiB.MANDANT_NR and DateiA.LIEFERANT_NR DateiB.LIEFERANT_NR and current timestamp between 
    DateiA
    .GUELTIG_VON and DateiA.GUELTIG_BIS and current timestamp 
    between DateiB
    .GUELTIG_VON and DateiB.GUELTIG_BIS and             
    DateiA.IFA_LIEFERANT_NR <> DAteiB.IFA_LIEFERANT_NR and           
    DateiA.IFA_LIEFERANT_nr and DateiB.IFA_LIEFERANT_NR 0      
    group by DateiB
    .IFA_LIEFERANT_NR
    Leider funktioniert eine Union Anweisung lt. meinem Wissen nicht in einer Set Anweisung.
    Für Eure Hilfe wäre ich Dankbar

    Gruß
    Jenne

  2. #2
    Registriert seit
    Oct 2003
    Beiträge
    192
    Hi,

    eventuell mal ein STRDBG UPDPROD(*YES) vor dem STRQSL machen und dann im Joblog mal nach der Satznummer gucken.

    Vielleicht ist es ja nur bei einem Lieferanten, ansonsten kann man daran eventuell eine zusätzliche Bedingung erkennen.


    Gruss

    Rince

  3. #3
    Registriert seit
    May 2004
    Beiträge
    184
    Sorry Rince,

    leider gibt es keine zusätzliche Verbindung. Jeder Lieferant hat mehr als 1 Artikel. Daher liegt es auch nicht an einem Lieferanten.
    Das einzige was Eindeutig wäre ist die Artikel_nr in der Datei. Vielleicht funktioniert das ja mit max(DateiB.Artikel_nr) ?
    Leider weiß ich nicht wo ich das einbauen könnte.

    Gruß
    Jenne

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Zwischen DateiA und DateiB muss eine eindeutige Beziehung bestehen, sonst funktioniert das nicht.
    Der Group by ist da nicht hilfreich, da in deiner Bezihung der Artikel keine Rolle spielt.

    Wenn Feld2 auf ALLE Sätze in DateiA upgedatet werden soll, dann verwende:
    select max(DateiB.Feld2) ....
    Das Group by kannst du dir sparen.

    Achte aber darauf, dass auch für jeden Satz in DateiA auch ein Satz in DateiB vorhanden ist.
    Ist das nicht der Fall, soltest du den Update mit "where exist in (select * from DateiB where ...)" ergänzen.
    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

  5. #5
    Registriert seit
    May 2004
    Beiträge
    184
    Danke Herr Fuerchau und Rince,

    jetzt hat es geklappt. Habe den max-Befehl richtig eingebaut.


    Gruß
    Jenne

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. SQL Update 2 Dateien
    By moskito in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 30-08-06, 17:30
  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
  •