- 
	
	
		
		
		
		
			SQL - Zeilen in Spalten
		
		
				
					
					
				
				
		
			
				
					Hallo *all 
 
hab mal wieder eine SQL-Frage 
 
habe eine Tabel die ungefähr wie folgt aus sieht: 
 
   
	PHP-Code: 
	
 WERKNR    SA   TEXT
  7500691   AU   Zylinder 7500691   AU   Hand 7500691   AU   Papierstau.                 7500691   KR   Anruf   7500691   KR   ebenso        7500691   KR   Info  7500691   KR   Bürste         7500691   MA   nachgeschickt 7500691   MA   neu 
 
 
 
ich bräuchte diese Daten jetzt aber so: 
 
	PHP-Code: 
	
Feld1      Feld2  Feld3        Feld4   Feld5    Feld6  Feld7    Feld8          Feld9
  Zylinder   Hand   Papierstau   Anruf   Ebenso   Info   Bürste   nachgeschickt  neu 
 
 
 
die Zeilenzahl kann variieren 
d.h. es können mal bei "AU" eine aber auch  mal sieben Sätze vorhanden sein!sein!  Ebenso bei "KR" bzw. "MA" 
 
Diese Abfrage soll anschließend noch mit Join, mit einer anderen Tabelle (über WERKNR) verknüpft werden!
				 
			 
			
		 
			
				
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					furchtbar. 
  
Wie willst du denn die Datei weiterverarbeiten, wenn die Spaltenzahl variabel ist? 
  
Wenn es z.B. als CSV verschickt wird, würde ich einfach ein RPG schreiben, das die Sätze liest und mit CAT aneinanderhängt. 
Kann dann mit CPY2STMF oder FTP oder sonstwie weiterverarbeitet werden. 
  
Sag doch mal mehr dazu. 
Und gibt es in der urspr. Tabelle auch eine Sortierung oder ist die sequenziell zufällig? 
  
Gruß, Christian
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
		
			Stimmt die Formatierung?
		
		
				
				
		
			
				
					Ich kann Dir nicht ganz folgen. Willst Du keine Gruppierung/Sortierung? Einfach alle TEXT-Spalten nebeneinander  in einer Zeile, so wie es jetzt dargestellt ist?
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					bei folgendem Select 
	PHP-Code: 
	
Select * from MyFile where WERKNR = 7500691' 
 
 
 
erhalte ich alles was zur Werknummer 7500691 gehört 
(siehe PHP-Code 1)! 
 
ich brächte aber alle "TEXT"-Inhalte zu dieser Werknr. in einer Zeile angeordnet 
(siehe PHP-Code 2)!
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Wenn du die maximale Anzahl an Wiederholungen kennst, kannst du es vielleicht so versuchen:
	PHP-Code: 
	
SELECT A.TEXT, B.TEXT, C.TEXT, D.TEXT,
        E.TEXT, F.TEXT, G.TEXT, H.TEXT, I.TEXT
 FROM (
 SELECT     MIN(RRN(A)) AS MINA,
            MIN(RRN(B)) AS MINB,
            MIN(RRN(C)) AS MINC,
            MIN(RRN(D)) AS MIND,
            MIN(RRN(E)) AS MINE,
            MIN(RRN(F)) AS MINF,
            MIN(RRN(G)) AS MING,
            MIN(RRN(H)) AS MINH,
            MIN(RRN(I)) AS MINI
            FROM ROWCOL AS A
 LEFT OUTER JOIN ROWCOL AS B ON RRN(B)>RRN(A)
 LEFT OUTER JOIN ROWCOL AS C ON RRN(C)>RRN(B)
 LEFT OUTER JOIN ROWCOL AS D ON RRN(D)>RRN(C)
 LEFT OUTER JOIN ROWCOL AS E ON RRN(E)>RRN(D)
 LEFT OUTER JOIN ROWCOL AS F ON RRN(F)>RRN(E)
 LEFT OUTER JOIN ROWCOL AS G ON RRN(G)>RRN(F)
 LEFT OUTER JOIN ROWCOL AS H ON RRN(H)>RRN(G)
 LEFT OUTER JOIN ROWCOL AS I ON RRN(I)>RRN(H)
 ) AS MIN
 LEFT OUTER JOIN ROWCOL AS A ON RRN(A)=MINA
 LEFT OUTER JOIN ROWCOL AS B ON RRN(B)=MINB
 LEFT OUTER JOIN ROWCOL AS C ON RRN(C)=MINC
 LEFT OUTER JOIN ROWCOL AS D ON RRN(D)=MIND
 LEFT OUTER JOIN ROWCOL AS E ON RRN(E)=MINE
 LEFT OUTER JOIN ROWCOL AS F ON RRN(F)=MINF
 LEFT OUTER JOIN ROWCOL AS G ON RRN(G)=MING
 LEFT OUTER JOIN ROWCOL AS H ON RRN(H)=MINH
 LEFT OUTER JOIN ROWCOL AS I ON RRN(I)=MINI 
 
 
 
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					die max. Anzahl ist mir leider nicht bekannt! :-(
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					dachte da irgendwie so in der Art! 
 
	PHP-Code: 
	
select a.WERKNR,a.TEXT,b.TEXT,c.TEXT   from MyFile a, MyFile b, MyFile c                where (a.WERKNR = b.WERKNR and b.WERKNR = c.WERKNR) and a.WERKNR = '7500691' 
 
 
 
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Hallo, 
 
wenn die Anzahl der Vorkommen nicht feststeht hast Du mit einer Tabelle schlechte Karten, da Du eine feste Anzahl Spalten definieren musst. Das einzige was Du machen kannst ist die einzelnen Texte in einem String aufzubereiten und dann in einem einzigen Feld ausgeben. Dies kann mit einer selbstgestrickten SQL-Funktion realisiert werden. 
 
Beispiel: 
	PHP-Code: 
	
CREATE FUNCTION MySchema/MyFunc ( 
     PARWerkNr Char(10), ParSA Char(2) ) 
     RETURNS VARCHAR(1024)   
     LANGUAGE SQL 
     NOT DETERMINISTIC 
     READS SQL DATA 
     CALLED ON NULL INPUT 
 BEGIN 
    DECLARE RETURNVAL VARCHAR ( 1024 ) NOT NULL DEFAULT ' ' ; 
    FOR CSRC1 AS C1 CURSOR 
        FOR SELECT Text 
               FROM MyTable 
               WHERE     WerkNr = PARWerkNr 
                     and SA     = ParSA
        DO SET ReturnVal = ReturnVal CONCAT ' ' CONCAT CsrC1.Text; 
    END FOR ; 
    RETURN LTRIM(ReturnVal) ; 
 END; 
 
 
 
Die Funktion kann wie folgt verwendet werden: 
	PHP-Code: 
	
Select Distinct WerkNr, SA, MyFunc(WerkNr, SA)
 From MyTable
 Where WerkNr = '4711'; 
 
 
 
Das Ergebnis sollte in etwa so aussehen: 
	PHP-Code: 
	
WerkNr    SA   Text
 7500691   AU   Zylinder        Hand       Papierstau
 7500691   KR   Anruf           ebenso     Info          Bürste
 7500691   MA   nachgeschickt   neu 
 
 
 
Birgitta
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					schaut ja schon mal nicht schlecht aus!  *fg 
 
kann man die Funktion jetzt noch so machen, daß ich nur eine Zeile bekomme! 
 
WERKNR & SA interessieren mich nicht 
 
	PHP-Code: 
	
Textfeld1                            Textfeld2                              Textfeld 3 Zylinder   Hand   Papierstau         Anruf   ebenso   Info   Bürste         nachgeschickt     neu 
 
 
 
				 
			 
			
		 
			
				
			
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					Ist denn die Anzahl der Begriffe wenigstens bekannt ? 
Dann könntest du folgenden Select stricken: 
  
select Text, ' ', ' ', ... from File 
where Text = 'Begriff1' 
union [all] 
select ' ', Text, ' ', ... from File 
where Text = 'Begriff2' 
union [all] 
select ' ', ' ', Text, ... from File 
where Text = 'Begriff3' 
  
Dies ist entsprechend der Anzahl möglicher Begriffe zu erweitern.
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
		
			
				
					
	
		
			
			
				
					  Zitat von  muadeep
					 
				 
				kann man die Funktion jetzt noch so machen, daß ich nur eine Zeile bekomme! 
			
		 
	 
 
Du meinst, dass Du eine Zeile erhälst, in der alle Ausprägungen drinstehen? Egal für welche WerksNr und egal für welche SA? 
 
Dann erstell die Funktion doch ohne Parameter, nimm' die Where-Bedingung im Select raus und ruf die Funktion ohne Parameter auf. 
 
@Fuerchau 
Baldur, Dir ist schon klar, das Du mit jedem Sub-Select mindestens eine Zeile generierst? 
... anstatt alles in einer Zeile unterzubringen. 
 
Birgitta
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
- 
	
	
		
		
		
				
				
					
				
		
			
				
					... leg doch den Bildschirm einfach auf die Seite, oder den Kopf auf den Schreibtisch 
 
D*B,  
der SQL UHL (unstructured Huddle Language) nennen würde, wenn das ginge...
				 
			 
			
		 
			
				
			
			
				
			
			
		 
	 
	
	 
 
		 
		
		
	
 
	
	
 
	
	
	
	
	
	
		Similar Threads
		
			
			
- 
  
    
    
       By christian_lettner in forum NEWSboard Programmierung
     
   
  
    Antworten: 2
       
        Letzter Beitrag: 16-11-06, 11:15
       
   
 
- 
  
    
    
       By FNeurieser in forum NEWSboard Programmierung
     
   
  
    Antworten: 3
       
        Letzter Beitrag: 11-10-06, 15:53
       
   
 
- 
  
    
    
       By malzusrex in forum IBM i Hauptforum
     
   
  
    Antworten: 8
       
        Letzter Beitrag: 19-09-06, 12:04
       
   
 
- 
  
    
    
       By Kaufmann in forum IBM i Hauptforum
     
   
  
    Antworten: 11
       
        Letzter Beitrag: 28-06-06, 15:11
       
   
 
- 
  
    
    
       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