[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2004
    Beiträge
    184

    SQL über 2 Dateien

    Hallo Kollegen,

    ich habe ein Problem und bekomme das nicht gelöst.

    Tabelle 1:
    Feld_Artikel_Nr
    007

    Tabelle 2:

    Feld_Artikel_Nr Preis
    007 1,00
    007 2,00
    007 3,00


    Jetzt möchte ich eine View erstellen die folgendermaßen aussehen sollte:

    View:

    Feld_Artikel_Nr Preise
    007 1,00 - 2,00 - 3,00
    Ich muss also aus 3 Preisfeldern ein Textfeld (mit concat) erstellen.

    Problem ist das die Anzahl der Preise aus Tabelle 2 unterschiedlich sein können. Mal haben wir ein Preis, aber bei einigen auch 5 Preise.

    Vielleicht kann mir einer helfen.

    Danke im Voraus
    Jenne

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Es können aber auch 10 Preise oder mehr werden?
    Ab V7R1 siehe hier:
    http://newsolutions.de/forum-systemi...ht=with+concat

    Ansonten gehts halt mit eingeschränkter Auswahl:

    select Artikel
    ,coalesce(char(a.Preis), '')
    concat coalesce(' - ' concat char(b.preis), '')
    concat coalesce(' - ' concat char(c.preis), '')
    from table1 x
    left join table2 a on x.Artikel=a.Artikel
    left join table2 b on x.Artikel=b.Artikel

    Je nach Anzahl ist der Concat und Left Join zu erweitern.
    Der "char(...)" sollte ggf. noch mit "trim(char(...))" ergänzt werden.

    Dabei frage ich mich, wofür eine Denormalisierung gut sein soll.
    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

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Es können aber auch 10 Preise oder mehr werden?
    Ab V7R1 siehe hier
    Rekursive Common Table Expressions sind bereits seit V5R4 möglich. Die hierarchische Query Anweisung (START WITH CONNECT BY) wurde dagegen erst mit Release 7.1 TR3 eingeführt.

    Ansonsten kann man sich immer noch eine kleine User Defined Function (UDF) bauen, etwa so:
    Code:
    CREATE FUNCTION MySchema/MyUDF ( 
    	PARARTNR CHAR(5) ) 
    	RETURNS VARCHAR(1024)   
    	LANGUAGE SQL 
    	READS SQL DATA 
    BEGIN 
      
       DECLARE RETURNVAL VARCHAR ( 1024 ) NOT NULL DEFAULT ' ' ; 
      
       FOR CSRC1 AS C1 CURSOR 
           FOR SELECT Preis 
                  FROM TABLE2 
                  WHERE ARTNR = PARARTNR 
           DO SET RETURNVAL = RETURNVAL CONCAT ' ' CONCAT VarChar(CSRC1.Preis) ; 
       END FOR ; 
      
       RETURN LTRIM(RETURNVAL) ; 
    END  ;
    Der Aufruf kann wie folgt aussehen:
    Code:
    Select Distinct ArtNr, MyUDF(ArtNr)
    From Table1;
    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

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 über 3 Dateien
    By Bobou in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-11-06, 08:26
  3. SQL Update 2 Dateien
    By moskito in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 30-08-06, 17:30
  4. SQL Case von mehreren Dateien
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 08-08-06, 09:34
  5. SQL über 168 Dateien
    By mikex01 in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 21-04-06, 16:11

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •