Heim > Datenbank > MySQL-Tutorial > Wie transformiere ich eine Eins-zu-Viele-Beziehung in separate Spalten in Informix SQL?

Wie transformiere ich eine Eins-zu-Viele-Beziehung in separate Spalten in Informix SQL?

Barbara Streisand
Freigeben: 2025-01-02 20:02:38
Original
1000 Leute haben es durchsucht

How to Transform a One-to-Many Relationship into Separate Columns in Informix SQL?

So zeigen Sie eine Eins-zu-Viele-Beziehung als separate Spalten an

Problem:

Um Daten aus einem zu transformieren Format wie:

id     codes

63592  PELL
58640  SUBL
58640  USBL
73571  PELL
73571  USBL
73571  SUBL
Nach dem Login kopieren

in:

id     codes 

63592  PELL
58640  SUBL, USBL
73571  PELL, USBL, SUBL
Nach dem Login kopieren

Lösung:

Die Verwendung eines benutzerdefinierten Aggregats in Informix SQL kann dies erreichen Transformation.

CREATE FUNCTION gc_init(dummy VARCHAR(255)) RETURNING LVARCHAR;
    RETURN '';
END FUNCTION;

CREATE FUNCTION gc_iter(result LVARCHAR, value VARCHAR(255))
    RETURNING LVARCHAR;
    IF result = '' THEN
        RETURN TRIM(value);
    ELSE
        RETURN result || ',' || TRIM(value);
    END IF;
END FUNCTION;

CREATE FUNCTION gc_comb(partial1 LVARCHAR, partial2 LVARCHAR)
    RETURNING LVARCHAR;
    IF partial1 IS NULL OR partial1 = '' THEN
        RETURN partial2;
    ELIF partial2 IS NULL OR partial2 = '' THEN
        RETURN partial1;
    ELSE
        RETURN partial1 || ',' || partial2;
    END IF;
END FUNCTION;

CREATE FUNCTION gc_fini(final LVARCHAR) RETURNING LVARCHAR;
    RETURN final;
END FUNCTION;

CREATE AGGREGATE group_concat
    WITH (INIT = gc_init, ITER = gc_iter,
          COMBINE = gc_comb, FINAL = gc_fini);
Nach dem Login kopieren

Beispiel:

Anwenden dieses Aggregats auf die Beispieldaten mit der folgenden Abfrage:

SELECT id, group_concat(codes)
    FROM anonymous_table
    GROUP BY id;
Nach dem Login kopieren

Wird das Gewünschte erzeugen Ausgabe:

58640 SUBL,USBL
63592 PELL
73571 PELL,SUBL,USBL
73572 PELL,SUBL,USBL
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie transformiere ich eine Eins-zu-Viele-Beziehung in separate Spalten in Informix SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage