[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    May 2007
    Beiträge
    29

    SQL rekursiv ?

    Hallo zusammen,

    ich habe folgende Herausforderung. Es handelt sich um 2 Tabellen. Die eine Tabellen enthält nur die Kundennummer. Die 2. Tabelle enthält ebenfalls die Kundennummer und eine bestimmte Eigenschaft des Kunden. Allerdings kann es x-Eigenschaften eines Kunden geben. Also eine 1:n-Beziehung.

    Kann ich aus den beiden Tabellen mit SQL-Anweisungen eine Ergebniszeile mit dem folgenden Format: KUNR, Eigenschaft1, Eigenschaft2, ...... bilden ?

    Allerdings ist die Anzahl der Eigenschaften nicht für alle Kunden gleich. Es gibt Kunden mit nur einer Eigenschaft, oder Kunden mit 10 Eigenschaften.

    Kann ich hier mit Rekursion arbeiten ?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ein ähnliches Thema hatten wir hier schon mal.
    Du musst dir dafür eine SQL-Funktion schreiben, die selber einen Select auf die 2. Tabelle macht, die einzelnen Werte mit Conact in eine Variable zusammenschiebt und dann zurückgibt.

    PS:
    Ab Firebird 2.1 gibts da die Aggregatfunktion LIST.
    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
    May 2007
    Beiträge
    29
    Super. Vielen Dank für die Info.
    Habe die Stelle im Forum auch bereits gefunden und die Funktion auf meine Bedürfnisse abgeändert.

    Leider bekomme ich bei der Erstellung der Funktion den Syntax-Fehler TOKEN ';' ungültig.

    Ich habe die Funktion bereits mehrfach geprüft, komme aber nicht auf den Fehler. Ich muss dazu sagen, dass dies nach der Funktion "HELLO" erst meine 2. UDF ist.

    Hier die Funktion:

    CREATE FUNCTION yc03xf5.ROW2COL ( PARIdVoBew VARChar(255) )

    RETURNS VARCHAR(2048)
    LANGUAGE SQL
    NOT DETERMINISTIC
    READS SQL DATA
    CALLED ON NULL INPUT
    BEGIN
    DECLARE RETURNVAL VARCHAR ( 2048 ) NOT NULL DEFAULT ' ' ;
    FOR CSRC1 AS C1 CURSOR
    FOR SELECT (trim(t2.bezei00001) !! ':' !! ' ' !!
    digits(t1.wert) !! ' - ') as TEXT
    FROM kessprod14.g_mer00001 t1
    join kessprod14.g_bew00001 t2
    on t1.id_merkmal = t2.id
    WHERE id_vo00001 = PARIdVoBew

    DO SET ReturnVal = ReturnVal CONCAT ' ' CONCAT CsrC1.Text;
    END FOR ;
    RETURN LTRIM(ReturnVal) ;
    END;

    Kann jemand den Fehler erkennen ?

    Vielen Dank für Eure Hilfe.

  4. #4
    Registriert seit
    Nov 2007
    Beiträge
    371
    beim letzten end kommt doch keines..
    also die letzte zeile

  5. #5
    Registriert seit
    May 2007
    Beiträge
    29
    peinlich, aber das wars.
    bin halt doch noch ein rookie
    danke dafür

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
  •