Deutsches Application Express Forum (ApEx) -- Installation , Engine / SQL , Anwendungen
HTMLDB Engine :  Oracle Apex The fastest message board... ever.
Alles in HTMLDB, Applikationen, Berichte, SQL ... 
Werte aus einer Tabelle in eine andere übertragen
geschrieben von: Eldri (91.192.15.---)
Datum:

Hallo,

ich habe mal wieder ein dummes Problem. Ich habe zwei verschiedene Tabellen, in denen die FilterID jeweils der Primary Key ist. Dieser ist auch immer der gleiche. Nun habe ich eine Tabelle, in der zur FilterID eine Summe berechnet wurde. Diese Tabelle ist nur eine Hilfstabelle, die ich aber auch zum Anzeigen benötige, kann ich also nicht wegrationalisieren. Die Summe wird hier auch recht kompliziert berechnet. Nun habe ich eine zweite Tabelle, die diese berechnete Summe als Ausgangsbasis nimmt (benötigt allerdins hier wieder einen Eintrag, ich weiss, das ist redundant, aber kann nicht anders gemacht werden, da sie Summe ein Vorschlag ist der übernommen wird und dann geändert werden kann). Ich wollte nun einfach die Daten aus der einen Tabelle mittels insert in die zweite Tabelle übertragen, was ja an sich kein Problem ist, solange die Daten nur einmal angefasst werden. Allerdings, wenn kann ich in der ersten Tabelle die Daten im nachhinein ändern. Wenn ich dann den Page Process wieder starte kommt zurecht Primary Key Constraint verletzt. Ausserdem sollen die Daten auch mit geändert werden (ich weiss ist nicht so gern gesehen, geht aber nicht anders). Ich dachte mir nun, da es ja mehrere Einträge sind, ich könne das mit Cursor lösen, aber irgendwie mag er mich da nicht. Ausserdem weiss ich nicht so recht, wie ich da feststellen kann, wenn zu der FilterID noch kein Eintrag in der Tabelle ist. Das Update bei bereits vorhanden funktioniert einwandfrei.

Ich gebe mal meinen Code mit, vielleicht habe ich ja irgendwo was falsch gemacht, sehe das nur nicht:

declare
cursor c_filterid IS SELECT t1."FilterID" FROM Tabelle1 t1, Tabelle2 t2
WHERE t1."FilterID" = t2."FilterID"
AND ...weitere Bedingungen (in der 2. Tabelle ist die Definition des Filters)
FOR UPDATE;

v_filterid numeric(32,0);

begin
open c_filterid;

loop
EXIT WHEN c_filteris%NOTFOUND;
fetch c_filterid into v_filterid;
update "Tabelle3" SET "Vorschlag" = (Select .....) -- das funktioniert
instert into "Hilfe" values (v_filterid); -- hier schaue ich einfach nach ob er alle IDs findet
end loop;

close c_filterid;

end;

Ich habe die Hilfetabelle angelegt, um zu schauen, welche ID er findet und was er in die Variable v_filterid schreibt. Wie gesagt, solange die Daten in der Endtabelle vorhanden sind, schreibt er das Update. Aber wenn keine Daten in der Endtabelle, aber in der Zwischentabelle vorhanden sind, werden nocht nicht einmal die FilterIDs in die Hilfetabelle eingetragen.

So ich hoffe ich habe mich nicht zu kompliziert ausgedrückt und ich hoffe ich kann einen Tipp bekommen.

Mit bestem Dank im voraus

Eldri



Thema Neugierige geschrieben von geschrieben
Werte aus einer Tabelle in eine andere übertragen 2561 Eldri
Re: Werte aus einer Tabelle in eine andere übertragen 1579 FrankLehmann


In diesem Forum dürfen nur registrierte Benutzer schreiben.
This forum powered by Phorum.