Insert Into so mit Unterabfrage möglich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Insert Into so mit Unterabfrage möglich?

    Hallo,

    würde gern eine angelegte DB2 Tabelle in einem PHP Programm mit Daten befüllen.
    Das doofe ist das diese aus einer Abfrage (welche keine eindeutigen Datensätze liefert) und neuen Daten bestehehn (wie z.b die Version des AUTO_INREMENT von DB2 welches dann in jede Zeile einen Zähler speichert)


    SQL Wunsch-Anweisung:

    INSERT INTO Arbeitsgang (ID, Arbeitsgang, Arbeitsgangart, Taetigkeit, Menge, Arbeitsgangsatz)
    VALUES (NEXT VALUE FOR ORDER_SEQ,'901','215','Reparatur',5,(select Arbeitsgangsatz FROM Arbeitsgang where Menge = 5 ))


    ist sowas inrgendwie in ähnlicher Form Möglich?

  • #2
    Hast du diese Query schon getestet? Was passiert? Fehlermeldungen?

    Kommentar


    • #3
      Re: Insert Into so mit Unterabfrage möglich?

      Original geschrieben von gochtel
      ist sowas inrgendwie in ähnlicher Form Möglich?
      Nein

      Original geschrieben von Syntax von Unterabfragen
      Eine weitere Einschränkung ist die Tatsache, dass Sie eine Tabelle derzeit nicht ändern und gleichzeitig in einer Unterabfrage eine Auswahl aus dieser Tabelle treffen können. Dies gilt für Anweisungen wie DELETE, INSERT, REPLACE, UPDATE und (da Unterabfragen in der SET-Klausel verwendet werden können) LOAD DATA INFILE. Eine umfassendere Beschreibung der Einschränkungen bei Unterabfragen finden Sie in Abschnitt I.3, „Beschränkungen von Unterabfragen“
      Gruss
      H2O

      Kommentar


      • #4
        danke für die schnellen Antworten, dacht ich mir, das es so nicht Möglich ist.

        aber wenn ich zuerst die Daten der Unterabfrage speicher, dann kann ich die zus. Daten nicht per Update einfügen, da ich keine eindeutigen Datensätze habe. Dafür brauche ich auch den Zähler.

        übrigens sagt die Fehlermeldung: AS4270 --> [SQL0811] ...wurde durch eine Unterauswahl eines Basisprädikats mehr als eine Zeile erstellt. Es ist nur eine Zeile zulässig...

        und wenn ich die Bedingung der Unterabfrage tatsächlich auf eine Zeile beschränke funktioniert das Ganze

        Kommentar


        • #5
          Ein anderer Ansatz wäre die INSERT- SELECT- Syntax, wobei du beim SELECT sonst einfach Konstanten eingibst:
          PHP-Code:
          $sql "
              INSERT INTO 
                  Arbeitsgang (
                      Arbeitsgang, 
                      Arbeitsgangart, 
                      Taetigkeit, 
                      Menge, 
                      Arbeitsgangsatz
                  )
              SELECT
                  901,
                  215,
                  'Reparatur',
                  5,
                  Arbeitsgangsatz 
              FROM 
                  Arbeitsgang 
              WHERE
                  Menge = 5"

          Gruss
          H2O

          Kommentar

          Lädt...
          X