Array of Integer mit Strings decodieren

Hallo liebe Gemeinde,

in den ALKIS-Tabellen befinden sich Arrays of Integer wie zum Beispiel:

entstehungsartoderklimasufewasserverhaeltnisse
integer[]
{1000}
{3000},{4000}
{1000}
usw.

und eine Tabelle:

wert…beschreibung
integer…varchar

1000 …Blume
2000 … …Stein
3000 … …Ast
4000 … …Wald

Wie erzeuge ich die Tabelle:

Klartext
varchar[]
{Blume}
{Ast},{Wald}
{Blume}

???

Danke für Eure Tipps!

ich glaube, du suchst sowas wie:

test=*# select * from t1;
 wert | beschr 
------+--------
 1000 | blume
 2000 | stein
 3000 | ast
 4000 | wald
(4 rows)

test=*# select * from t2;
       info       
------------------
 {1000}
 {3000,4000}
 {1000,2000,3000}
(3 rows)

test=*# with x1 as (select t2.info, unnest(t2.info) as wert from t2) select info, string_agg(t1.beschr,', ') from x1 left join t1 on x1.wert=t1.wert group by x1.info;
       info       |    string_agg     
------------------+-------------------
 {3000,4000}      | ast, wald
 {1000}           | blume
 {1000,2000,3000} | blume, stein, ast
(3 rows)

Vielen Dank für diese Anregung! Ich bastle aber noch an einer Lösung, bei der die Endtabelle die gleiche Struktur wie die array- Ausgangstabelle hat.
Der unnest - Befehl macht aus den Spalten der array - Elemente Zeile, so dass die Endtabelle eine andere Struktur erhält.
Mir schwebt da eine Lösung mit max(array_length()) und dann ein select im Loop von 1 bis max(array_length()) vor…

Ähh, Du hast aber schon die gesamte Antwort von akretschmer gelesen, so mit runterscrollen und so?

Was ist genau die Struktur der Ausgangstabelle und wie genau soll das Ergebnis aussehen?

Yeap.

Ich habe eine etwas größere Tabelle der Dimension: m:n mit dem Code ausprobiert und die Lösungstabelle hat die Dimension: unterschiedliche arrays:m…

Mein Ziel ist es eine Spalte als array of char mit den Klarnamen statt der Codeziffern in die sonst gleiche Tabelle zu basteln. Heute kam ein ziemlich dickes Buch zur SQL-Programmierung ins Haus geflattert und sollte ich es hinbekommen, poste ich hier die Lösung…

Besser wäre ein Buch zur Normalisierung gewesen… :wink:

Das haben mir die vom ALKIS eingebrockt, und auch noch zwei Eigenschaften in einer Spalte… Die müssen besoffen gewesen sein.

ALKIS sind gern besoffen, so ist das nun mal.

Ich habe nicht verstanden, was Du an der erhaltenen Antwort vermisst. Für mich macht sie genau das, was Du forderst.
Codes durch passende Texte ersetzen. (Ob es nun in geschweiften Klammern steht oder nicht ist Zucker und kann verändert werden)