Einfügen von Daten für ausgewählte Spalten

Hallo Leute,

ich habe viel im Internet gefunden zu Daten einfügen in Tabellen und auch Tabellen verschmelzen solange die ähnliche Formate haben, jedoch kann ich nicht Daten einer Tabelle in eine andere Tabelle einfügen, für bestimmte ID.
Hier die Tabellen:

Diese Namen sollen Grundstücke erhalten, wie folgt:

Hier die Tabelle, wo diese Namen rein sollen:

Wie kriegen ich nun die Namen aus der ersten Tabellen in die Spalte eigentuemer der zweite Tabelle rein, speziell nach den Besitzverhältnissen wie im zweiten Bild beschrieben.

Vielen Dank im Voraus.

ich sehe keine Verbindung zwischen den Tabellen. Welche Spalte der dritten Tabelle kennzeichnet denn den Eigentümer? Die zweite Tabelle scheint eine Zuordnung zu sein, nur auf was bezieht sich bei Klaus z.B. 1,4,5 ?

Kannst Du bitte Deine Beispieldaten als INSERT INTO Befehle (als Text - nicht als Screenshot) einfügen? Idealerweise zusammen mit dem CREATE TABLE Statement. Die Daten aus den Bildern kann man nicht mal mit Copy & Paste für eine Testumgebung verwenden.

Oder noch besser: erzeuge ein kleines Beispiel-Skript mit https://rextester.com/l/postgresql_online_compiler oder http://dbfiddle.uk/

ja, schon halbwegs klar.

test=*# select * from zuordnung ;
  name   | grundstuecke 
---------+--------------
 Klaus   | 1,4,5
 Karolin | 3,16,17,18
(2 rows)

test=*# select name, regexp_split_to_table(grundstuecke,',') from zuordnung ;
  name   | regexp_split_to_table 
---------+-----------------------
 Klaus   | 1
 Klaus   | 4
 Klaus   | 5
 Karolin | 3
 Karolin | 16
 Karolin | 17
 Karolin | 18
(7 rows)

test=*#

Was nicht klar ist, ist dann die dritte Tabelle. Spalte id = Eigentümer? Man kann nur raten …

test=*# create table flurstueck(id int primary key, name text);
CREATE TABLE
test=*# insert into flurstueck (id) values (1);
INSERT 0 1
test=*# insert into flurstueck (id) values (4);
INSERT 0 1
test=*# insert into flurstueck (id) values (16);
INSERT 0 1
test=*# insert into flurstueck (id) values (18);
INSERT 0 1
test=*# select * from flurstueck ;
 id | name 
----+------
  1 | 
  4 | 
 16 | 
 18 | 
(4 rows)
test=*# with owner as (select name, regexp_split_to_table(grundstuecke,',') from zuordnung ) update flurstueck set name = owner.name from owner where id=regexp_split_to_table::int;
UPDATE 4
test=*# select * from flurstueck ;
 id |  name   
----+---------
  1 | Klaus
  4 | Klaus
 16 | Karolin
 18 | Karolin
(4 rows)

test=*#

Für die Zukunft beschäftige Dich bitte mit Tabellendesign.