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

Update von einer Abfrage in eine Tabelle

Dieses Thema im Forum "Oracle" wurde erstellt von MrUnwissend, 11 April 2018.

  1. MrUnwissend

    MrUnwissend Benutzer

    Hi Leute,

    ich möchte aktuell ein Update machen und scheitere etwas daran

    Wenn ich folgendes mache

    update XXX table1
    set (1 ,2 ) = (SELECT A,B
    FROM
    (
    Abfrage die die Alias A und B enthält
    )
    )

    bekomme ich lediglich die Fehlermeldung ORA-01427:Unterabfrage für eine Zeile liefert mehr als eine Zeile

    Ich verstehe die Fehlermeldung aber nicht, da meine Abfrage keine mehrfachen Antworten für eine Zeile liefert. Wenn ich die Abfrage alleine starte läuft sie nämlich durch.

    Wo ist hier mein Denkfehler?

    Liebe Grüße und Danke :)
     
  2. drdimitri

    drdimitri Datenbank-Guru

    Wenn die DB das sagt, dann stimmt das im Regelfall auch.
    Wie sieht denn das ganze Update aus?
     
  3. MrUnwissend

    MrUnwissend Benutzer

    Das ist das ganze update :D

    PS: Ich mache zum 1. mal ein update

    ----
    EDIT:

    Also es liegt ja an der fehlenden Zuordnung zu einer Zeile... mein Problem ist nun ich habe in table1 keinen vergleichsparameter... wo ich eine sinnvolle where bedingung aufstellen könnte.

    Wie stell ich das nun an?
     
    Zuletzt bearbeitet: 12 April 2018
  4. drdimitri

    drdimitri Datenbank-Guru

    Wenn du zwei Tabellen miteinander joinen willst, diese Tabellen aber keine Spalten besitzen mit denen man sie verknüpfen kann - nun ja :rolleyes:
     
  5. MrUnwissend

    MrUnwissend Benutzer

    Naja, ich will ja nichts joinen ich will einfach meine tabelle die aus der Abfrage entsteht in eine andere tabelle rein schreiben die lediglich als zwischenpuffer dienen soll .. die tabelle die befüllt wird soll gar keinen bezug zur abfrage haben

    Kann man das nicht irgendwie über die rownum machen?:)

    Außerdem habe ich noch eine allgemeine Frage...

    in der Updateklammer
    (Select
    FROM (Abfrage) table2
    WHERE)

    wird mein Alias für 'FROM (Abfrage) table2 nicht angenommen, woran könnte das liegen?
     
  6. drdimitri

    drdimitri Datenbank-Guru

    Du willst keinen Update machen (ändern von bestehenden Daten) sondern einen Insert.
    Code:
    insert into tabelle1 (spalte1,spalte2) 
     select das_soll_in_spalte1, das_soll_in_spalte2 from tabelle2
     
  7. MrUnwissend

    MrUnwissend Benutzer

    mhm, die daten sind durch insert aber nicht dauerhaft in meiner zieltabelle oder mache ich was falsch?
    Ich glaube ich habe mich da falsch ausgedrückt.. es soll in der ziel tabelle schon dauerhaft drin stehen...( mache das ganze eigentlich um den Zeitaufwand der abfrage zu umgehen, will die Daten dann nochmals weiterverarbeiten)
     
  8. drdimitri

    drdimitri Datenbank-Guru

    Vermutlich fehlt dir ein commit um die Daten festzuschreiben.
     
  9. MrUnwissend

    MrUnwissend Benutzer

    Ich habe einen commit (durch einen Button der ein DB Symbol hat und einen grünen Pfeil nach unten ;) durchgeführt, die Daten sind aber leider nicht in der zieltabelle :/
     
    Zuletzt bearbeitet: 12 April 2018
  10. drdimitri

    drdimitri Datenbank-Guru

    Und wie genau sieht dein Insert aus? Ein SELECT mit der gleichen WHERE Bedingung liefert Ergebnisse? Handelt es sich bei der Zieltabelle um eine Global Temporary Table?
     
  11. MrUnwissend

    MrUnwissend Benutzer

    insert into table1 (1,2)
    (Select A,B
    FROM (Abfrage)
    )

    ich habe keine Where Bedingung.. er soll einfach von der 1. Zeile an befüllen
     
  12. drdimitri

    drdimitri Datenbank-Guru

    Das ist kein syntaktisch gültiges SQL.
     
  13. MrUnwissend

    MrUnwissend Benutzer

    Was mache ich falsch?
     
  14. drdimitri

    drdimitri Datenbank-Guru

    Kann ich dir erst sagen, wenn du es schaffst genau das SQL zu posten das du ausführst.
     
  15. MrUnwissend

    MrUnwissend Benutzer

    Ich poste genau das SQL das ich ausführe nur nicht mit der selben Abfrage weil die 2 DINA4 Seiten ein nimmt :O
    Deshalb habe ich einfach meine SQL Abfrage abstrahiert :) vom Aufbau ist es aber genau so wie ich es hier rein poste
     
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