Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Multi Insert mit Sub Select verknüpfen?

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von mpw1412, 19 Juni 2013.

  1. mpw1412

    mpw1412 Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
  3. ukulele

    ukulele Datenbank-Guru

    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.
     
  4. mpw1412

    mpw1412 Benutzer

    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
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Die Online-Doku zu PostgreSQL ist gut ;-)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden