Multi Insert mit Sub Select verknüpfen?

mpw1412

Benutzer
Beiträge
6
Hallo,

ich habe mich gerade hier registriert, da ich für mein Problem leider keine Lösung per Google finden kann. Ich möchte folgendes tun:

Aus einer Tabelle ziehe ich eine einzelne Spalte. Der Select Befehl (mit where) liefert z.B. 100 Einträge zurück; nur eine Spalte.

Jetzt möchte ich jeden dieser 100 Einträge in eine andere Tabelle übernehmen und gleichzeitig dort die andere Spalten der neuen Tabelle auf konstante Werte setzen, die ich dem Befehl mit übergeben würde.

Ich finde immer nur multi inserts oder subselects. Aber bei mir beschwert sich sql auch darüber, dass mein Select mehr als eine Row zurückgibt. Wie kann ich multi inserts mit subselects kombinieren?

Hintergrund: Es geht um Tabelle mit verschiedenen n-to-n-Relationen. Und dort muss eine Relation für viele verschiedene Objekte gesetzt werden. Leider so viele, dass ich das echt nicht per Hand machen will; außerden würde ich es auch gerne lernen.

Grüße
MPW
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.174
Hallo,

ich habe mich gerade hier registriert, da ich für mein Problem leider keine Lösung per Google finden kann. Ich möchte folgendes tun:

Aus einer Tabelle ziehe ich eine einzelne Spalte. Der Select Befehl (mit where) liefert z.B. 100 Einträge zurück; nur eine Spalte.

Jetzt möchte ich jeden dieser 100 Einträge in eine andere Tabelle übernehmen und gleichzeitig dort die andere Spalten der neuen Tabelle auf konstante Werte setzen, die ich dem Befehl mit übergeben würde.

MPW

Code:
test=# create table mpw1412(i int, konstante text);
CREATE TABLE
Time: 25,190 ms
test=*# insert into mpw1412 select s, 'test' from generate_series(1,10) s;
INSERT 0 10
Time: 0,489 ms
test=*# create table mpw1412_2(i int, konstante text);
CREATE TABLE
Time: 3,019 ms
test=*# insert into mpw1412_2 select i, 'verstanden?' from mpw1412;
INSERT 0 10
Time: 0,600 ms
test=*# select * from mpw1412_2;
 i  |  konstante
----+-------------
  1 | verstanden?
  2 | verstanden?
  3 | verstanden?
  4 | verstanden?
  5 | verstanden?
  6 | verstanden?
  7 | verstanden?
  8 | verstanden?
  9 | verstanden?
 10 | verstanden?
(10 rows)
 

ukulele

Datenbank-Guru
Beiträge
4.416
Ein Subselect darf in einem Update Statement immer nur einen Wert zurück geben da ja auch nur ein Wert geschrieben wird. Ob das, was du vor hast in SQL mit einem einzelnen Update Befehl möglich ist oder vieleicht besser in einer Schleife gemacht wird kann ich nicht sagen aber es dürfte mit wenig Code machbar sein. Du müsstest allerdings die Tabellen und Spalten die betroffen sind mal genauer beschreiben und mir sagen, wann welcher Wert gesetzt werden soll.
 

mpw1412

Benutzer
Beiträge
6
Hallo,

vielen Dank akretschmer! Ich konnte deine Syntax auf meines umstricken und habe am Ende dann noch mein where eingefügt, um die Auswahl(select) einzuschränken.

Da wäre ich nie drauf gekommen, dass ich den select-Befehl mit den Konstanten mischen kann.

Ich muss dringend mal ein gutes SQL-Buch lesen. Diese ganzen Howtos im Netz kommen alle sammt nicht über select, insert und where hinaus.

Also vielen Dank nochmal!

Grüße
MPW
 
Werbung:
Oben