- 
	
	
		
		
		
		
			SQL: Update in Datei B, wenn Datei A best. Info enthält
		
		
				
					
					
				
				
		
			
				
					Hallo zusammen, 
habe bisher SQL nur für Update usw. einer einzigen Datei genutzt.  
Wie ist die exakte Syntax, wenn ich ein Update in Datei B/Feld B durchführen möchte, wenn Datei A/Feld A z.B. den Inhalt "X" hat ?
				 
			 
			
		 
			
				
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Update DateiB B set B.FeldB=Wert 
where exists (select * from DateiA where B.Key=A.Key and A.FeldX='A') 
  
Wert kann auch ein Select sein: 
  
Wert:= (Select C.Feld from DateiC C where b.key = c.key)
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					
	
		
			
			
				
					  Zitat von  Fuerchau
					 
				 
				Update DateiB B set B.FeldB=Wert 
where exists (select * from DateiA where B.Key=A.Key and A.FeldX='A') 
  
Wert kann auch ein Select sein: 
  
Wert:= (Select C.Feld from DateiC C where b.key = c.key) 
			
		 
	 
 
Hallo Herr Fuerchau, 
 
Habe in die Datei ZSTDP ein neues Feld hinzugefügt(STS) und wollte es mit dem Feld(VKO) von der Datei ZW9ARB auffüllen. 
 
Bekomme aber die Meldung: 
Nullwerte für Spalte oder Variable STS nicht zulässig.        
	Code: 
	UPDATE ZSTDP B SET           
B.STS = (SELECT A.VKO FROM         
ZW9ARB A WHERE B.RMC = A.RCD) 
 
Beim Select ausführen bekomme ich aber keine Nullwerte. 
 
 
Gruß  
 
Tarki
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					In dem Inner-Select bestimmst du die Beziehung der Herkunft. 
Aber du hast wohl auch Daten in ZSTDP wo du keine Entsprechung in ZW9ARB hast, daher der Null-Wert. 
Deshalb die Where-Klausel mit Exists zur Update-Anweisung. 
  
Alternativ kannst du auch "coalesce( (select ...), b.sts)" in der Set-Anweisung verwenden. 
Mit dem Exists wirds aber u.U. schneller, da weniger Updates durchgeführt werden.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					
	
		
			
			
				
					  Zitat von  Fuerchau
					 
				 
				In dem Inner-Select bestimmst du die Beziehung der Herkunft. 
Aber du hast wohl auch Daten in ZSTDP wo du keine Entsprechung in ZW9ARB hast, daher der Null-Wert. 
Deshalb die Where-Klausel mit Exists zur Update-Anweisung. 
  
Alternativ kannst du auch "coalesce( (select ...), b.sts)" in der Set-Anweisung verwenden. 
Mit dem Exists wirds aber u.U. schneller, da weniger Updates durchgeführt werden. 
			
		 
	 
 
... was aber (wieder einmal) nicht zum selben Resultat führen muss. Bei der Where exists Variante werden Sätze ohne Entsprechung in Ruhe gelassen, bei der coalesce Variante auf einen Initwert gesetzt... 
 
... mit Brille ... habe das b.xxx im coalesce nicht gesehen 
 
D*B
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					
	
		
			
			
				
					  Zitat von  Fuerchau
					 
				 
				In dem Inner-Select bestimmst du die Beziehung der Herkunft. 
Aber du hast wohl auch Daten in ZSTDP wo du keine Entsprechung in ZW9ARB hast, daher der Null-Wert. 
Deshalb die Where-Klausel mit Exists zur Update-Anweisung. 
  
Alternativ kannst du auch "coalesce( (select ...), b.sts)" in der Set-Anweisung verwenden. 
Mit dem Exists wirds aber u.U. schneller, da weniger Updates durchgeführt werden. 
			
		 
	 
 
Habe schon vorher mit exists herumexperimentiert, aber  
ich weiss nicht wie ich das exist im Statement einbauen soll. 
 
Gruß 
 
Tarki
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					UPDATE ZSTDP B SET            
B.STS = (SELECT A.VKO FROM          
ZW9ARB A WHERE B.RMC = A.RCD) 
where exists (select * from ZW9ARB C WHERE C.RMC = A.RCD)
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Dieses SqlStatement hätte ich schon versucht, aber bekomme die Fehlermeldung: 
Qualifikationsmerkmal für Spalte oder Tabelle A nicht definiert. 
 
Wieso erkennt er im exists-Teil  die Datei ZW9ARB A nicht an? 
 
bzw. wie würde das Statement eigentlich mit coalesce aussehen? 
 
Performance wäre eigentlich egal, da ich das Statement nur genau 1 mal brauche.
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					ich denke das letzte müste C.RCD heißen 
 
where exists (select * from ZW9ARB C WHERE B.RMC = C.RCD)
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Danke! 
Ihr seid einfach die BESTEN! 
 
Gruß 
 
Tarki
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Teppfuhler sind fohrgeseen  .
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
					
				
		
			
				
					... und dürfen behalten werden 
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
		 
		
		
	
 
	
	
 
	
	
	
	
	
	
		Similar Threads
		
			
			
- 
  
    
    
       By mk in forum NEWSboard Programmierung
     
   
  
    Antworten: 13
       
        Letzter Beitrag: 13-07-12, 09:53
       
   
 
- 
  
    
    
       By rissling in forum NEWSboard Programmierung
     
   
  
    Antworten: 6
       
        Letzter Beitrag: 28-03-11, 19:51
       
   
 
- 
  
    
    
       By moskito in forum NEWSboard Programmierung
     
   
  
    Antworten: 5
       
        Letzter Beitrag: 30-08-06, 18:30
       
   
 
- 
  
    
    
       By wuwu in forum IBM i Hauptforum
     
   
  
    Antworten: 3
       
        Letzter Beitrag: 18-07-06, 16:31
       
   
 
- 
  
    
    
       By loeweadolf in forum NEWSboard Programmierung
     
   
  
    Antworten: 2
       
        Letzter Beitrag: 01-06-06, 10:43
       
   
 
			 
		 
	 
	
	
	
	
	
		
		
		
		
			
				 
				Berechtigungen
			
			
				
	
		- Neue Themen erstellen: Nein
 
		- Themen beantworten: Nein
 
		- You may not post attachments
 
		- You may not edit your posts
 
		-  
 
	 
	
	Foren-Regeln 
 
			 
		 
	 
 
  
  
 
  
 
 
  | 
Erweiterte Foren Suche
Google Foren Suche
  
Forum & Artikel   Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
 
 
 
 | 
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
 
- Cloud, Social Media, Devices
 
- DMS, Archivierung, Druck
 
- ERP + Add-ons, Business Software
 
- Hochverfügbarkeit
 
- Human Resources, Personal
 
- IBM Announcements
 
- IT-Karikaturen
 
- Leitartikel
 
- Load`n`go
 
- Messen, Veranstaltungen
 
- NEWSolutions Dossiers
 
- Programmierung
 
- Security
 
- Software Development + Change Mgmt.
 
- Solutions & Provider
 
- Speicher – Storage
 
- Strategische Berichte
 
- Systemmanagement
 
- Tools, Hot-Tips
 
 
Auf dem Laufenden bleiben
 
 | 
Bookmarks