Update von einer Abfrage in eine Tabelle

MrUnwissend

Benutzer
Beiträge
13
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 :)
 
Werbung:
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:
Wenn du zwei Tabellen miteinander joinen willst, diese Tabellen aber keine Spalten besitzen mit denen man sie verknüpfen kann - nun ja :rolleyes:
 
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?
 
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
 
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)
 
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:
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?
 
Werbung:
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
 
Zurück
Oben