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

Probleme, Fragen die mit der Installation und Anwendung der PostGIS-Erweiterung zu tun haben.
Antworten
habibi2323
Neuer Benutzer
Beiträge: 3
Registriert: Di 25. Jun 2019, 12:53

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

Beitrag von habibi2323 » Di 25. Jun 2019, 13:20

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:
Bild
Diese Namen sollen Grundstücke erhalten, wie folgt:
Bild
Hier die Tabelle, wo diese Namen rein sollen:
Bild

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.

akretschmer
Erfahrener Benutzer
Beiträge: 7672
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

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

Beitrag von akretschmer » Di 25. Jun 2019, 13:33

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 ?
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

habibi2323
Neuer Benutzer
Beiträge: 3
Registriert: Di 25. Jun 2019, 12:53

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

Beitrag von habibi2323 » Di 25. Jun 2019, 13:43

akretschmer hat geschrieben:
Di 25. Jun 2019, 13:33
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 ?
Klaus soll die Grundstücke 1,4,5 erhalten, sprich Klaus soll in der zweite Tabelle unter der Spalte eigentuemer bei id 1,4,5 auftauchen.

castorp
Erfahrener Benutzer
Beiträge: 1170
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

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

Beitrag von castorp » Di 25. Jun 2019, 13:53

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/
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

akretschmer
Erfahrener Benutzer
Beiträge: 7672
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

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

Beitrag von akretschmer » Di 25. Jun 2019, 13:56

ja, schon halbwegs klar.

Code: Alles auswählen

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 ...
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

habibi2323
Neuer Benutzer
Beiträge: 3
Registriert: Di 25. Jun 2019, 12:53

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

Beitrag von habibi2323 » Di 25. Jun 2019, 14:00

akretschmer hat geschrieben:
Di 25. Jun 2019, 13:56
ja, schon halbwegs klar.

Code: Alles auswählen

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 ...
Blöderweise ist zwei id-Spalten in der dritten Tabelle.
Jedoch sollte das kein Problem darstellen, denke ich.

akretschmer
Erfahrener Benutzer
Beiträge: 7672
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

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

Beitrag von akretschmer » Di 25. Jun 2019, 14:40

Code: Alles auswählen

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.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten