Sandra: INSERT per SELECT und aber die Zieltabelle erweitern

Hallo Zusammen,
folgendes Problem: ich möchte Daten per SELECT aus einem View auslesen und per INSERT in einer Hilfstabelle speichern. Nun möchte ich aber die Zieltabelle um 3 Spalten erweitern:

  • ID (autoIncrement)
  • LINE (DEFAULT 0)
  • POS (DEFAULT 0)

Nun die Frage: ist das generell möglich? Soweit ich bisher darüber gelesen habe, muss die Spaltenanzahl von Quelltabelle und Zieltabelle identisch sein. Aber vielleicht kennt ihr einen Workaround mit dem es doch möglich ist.

Falls es überhaupt nicht möglich ist, wäre ein möglicher Ansatz die ID und die Positionsdaten in einer separaten Tabelle zu speichern und die beiden Tabellen zu verknüpfen? Allerdings wäre es schön, wen ich mit einer Tabelle auskommen könnte!

Vielen Dank für eure Hilfe!
Grüße
Sandra

  1. hi,

    folgendes Problem: ich möchte Daten per SELECT aus einem View auslesen und per INSERT in einer Hilfstabelle speichern. Nun möchte ich aber die Zieltabelle um 3 Spalten erweitern:

    • ID (autoIncrement)
    • LINE (DEFAULT 0)
    • POS (DEFAULT 0)

    Sollen in die letzten beiden noch irgendwelche Werte reingefüllt werden, oder sollen die nur mit 0 befüllt werden?

    Soweit ich bisher darüber gelesen habe, muss die Spaltenanzahl von Quelltabelle und Zieltabelle identisch sein.

    Denk nicht "in Tabellen".
    Wenn du INSERT ... SELECT machst, muss die Anzahl an "Spalten", die der SELECT liefert, zu der Anzahl Spalten, in die eingefügt werden soll, passen.

    Eine Autoincrement-Spalte wird auch dann hochgezählt, wenn du als Wert NULL übergibst. Und Festwerte wie bspw. 0 oder 5 lassen sich auch einfach "selektieren" - SELECT 5.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Sollen in die letzten beiden noch irgendwelche Werte reingefüllt werden, oder sollen die nur mit 0 befüllt werden?

      ja. Erstmal benötige ich 0 (meinetwegen auch NULL). Alle Datensätze mit 0 werden dann in ein DropDown-Menü geladen.
      Dort kann eine Auswahl getroffen werden, nach abschicken werden dann Werte gesetzt, die eine Aussage zur Position des Datensatzes (für die spätere Visualisierung) treffen.

      Wenn du INSERT ... SELECT machst, muss die Anzahl an "Spalten", die der SELECT liefert, zu der Anzahl Spalten, in die eingefügt werden soll, passen.

      OK, aber kann ich SELECT möglicherweise mit VALUE kombinieren, sodass ein Teil der Daten aus "Quellspalten" kommt, alle anderen "Zielspalten" (für die keine Werte per SELECT kommen) aber mit NULL befüllt werden?

      Eine Autoincrement-Spalte wird auch dann hochgezählt, wenn du als Wert NULL übergibst. Und Festwerte wie bspw. 0 oder 5 lassen sich auch einfach "selektieren" - SELECT 5.

      Leider habe ich keine MySQL Datenbank, sondern eine Oracle Datenbank. Ich habe schon etwas gefunden, dass das MySQL AutoIncrement ersetzt, allerdings weiss ich nicht, ob es sich dann bei NULL genauso verhält.

      Ein weiterer Ansatz, den ich mir überlegt habe:
      Speichern des SELECT-Ergebnis in einem Array und einfügen des Arrays in der neuen Tabelle per VALUES, aber meine Variablen wurden nicht mehr erkannt, als sie innerhalb der SQL INSERT-Anweisung standen.

      SQL und PHP darf in der Form wohl nicht vermischt werden, aber wäre das prinzipiell eine Möglichkeit?

      Thx und Gruß
      Sandra

    2. manchmal beantwortet man sich seine Fragen auch selber :o)
      Das Vorgehen mit dem Array schein seinen Dienst zu tun und seit die Variablen in '' gesetzt sind werden sie auch akzeptiert.