Heim > Datenbank > MySQL-Tutorial > Wie zeige ich Eins-zu-Viele-Beziehungen als durch Kommas getrennte Listen in Informix SQL an?

Wie zeige ich Eins-zu-Viele-Beziehungen als durch Kommas getrennte Listen in Informix SQL an?

Patricia Arquette
Freigeben: 2025-01-03 17:29:40
Original
323 Leute haben es durchsucht

How to Display One-to-Many Relationships as Comma-Separated Lists in Informix SQL?

Eins-zu-Viele-Beziehung als eindeutige Zeilen mit durch Kommas getrennten Listen unter Verwendung von Informix SQL

Ähnlich wie bei Fragen, die bei Stack Overflow gestellt werden Der Artikel stellt eine Informix-SQL-Lösung zur Anzeige einer Eins-zu-viele-Beziehung als einzelne eindeutige Zeile mit Komma-Trennung bereit Listen.

Anfangsdaten

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

Gewünschte Ausgabe

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

Benutzerdefiniertes benutzerdefiniertes Aggregat

Um die gewünschte Ausgabe zu erzielen, wird ein benutzerdefiniertes benutzerdefiniertes Aggregat benötigt (UDA) ist erforderlich. Unten ist ein Beispiel-UDA mit dem Namen „group_concat“:

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

Abfrage mit gruppierter Verkettung

Durch Anwenden des Group_concat-UDA auf die Originaldaten können wir nach der eindeutigen ID und gruppieren Aggregieren Sie die Codes mithilfe der benutzerdefinierten UDA:

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

Ausgabe

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

Zusätzliche Hinweise

  • Diese UDA verarbeitet Datentypen, die kann in VARCHAR(255) konvertiert werden (z. B. numerisch oder temporal). Typen).
  • Ab Informix 12.10.FC5 scheint die maximale Länge des Gesamtergebnisses 16380 Bytes zu betragen.
  • Um die UDA und zugehörige Funktionen zu entfernen, führen Sie die folgenden Befehle aus:
DROP AGGREGATE IF EXISTS group_concat;
DROP FUNCTION IF EXISTS gc_fini;
DROP FUNCTION IF EXISTS gc_init;
DROP FUNCTION IF EXISTS gc_iter;
DROP FUNCTION IF EXISTS gc_comb;
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie zeige ich Eins-zu-Viele-Beziehungen als durch Kommas getrennte Listen in Informix SQL an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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