[ORACLE] Update mit Summe aus Tabelle

Mustermantz

Grünschnabel
Hallo Forum!

Mal wieder ich mit einem kleinen Problem:

Code:
Tabelle1:

ID1 | Wert1 | Wert2
1   | 100   | 123
2   | 100   | 456
3   | 200   | 789
4   | 300   | 135

Tabelle2:

ID2 | Wert1 | Summe
1   | 100   | 
2   | 200   | 
3   | 300   |

Ich bräuchte in Tabelle2 in der Spalte Summe die Summenwerte von Tabelle1.Wert2 mit Tabelle2.Wert1=Tabelle1.Wert1
Komme irgendwie im Moment nicht drauf, was ich bisher gebastelt habe hat nicht so richtig funktioniert...

Gruß
M.
 
Ungetestet... aber so sollte es unter anderem gehen.
SQL:
UPDATE table2 t2
SET t2.summe = (
        SELECT SUM(t1.wert2)
        FROM table1 t1
        WHERE t1.wert1 = t2.wert2);
 
Zuletzt bearbeitet von einem Moderator:
Danke, so hatte ich es auch :) War ich doch nicht so ganz falsch gelegen.

Nach 10 Minuten dachte ich ich kann die Verbindung mal zurücksetzen, da nichts mehr passiert ist, anbei die Werte der Tabelle (so lange sollte das Statement nicht dauern):

Tabelle1: 787181 Zeilen
Tabelle2: 187085 Zeilen


Gruß
M.
 
Setze Indexe Sinnvoll ein.
Also je ein Index auf wert1

Performance-Verbesserungen sind keine eindeutige und einfache Sache. Es ist ein testen und heran tasten. Auswerten von Explainplans, SQL umschreiben - ggf. total umschreiben, weiter testen, Anzahl Datensätze der Tabelle vergleichen, ggf. Subqueries machen um die Datenmenge so früh wie möglich klein zu kriegen etc.
Also, so einfach *schnipp*und ein SQL ist schnell - das kannst du vergessen. Diese ganzen Punkte die ich aufgezählt habe gehen auch nicht einfach so mit im Forum hin und her schreiben. Lies dich in das Thema ein. Verscuh es zu verstehen. Und dann setz dich hin und probier dich durch.
 
Nicht dass wir uns da falsch verstehen, das Statement muss nicht schnell sein, wird sowieso irgendwann nachts ausgeführt wenn auf der Datenbank nichts los ist.
Problem ist eher dass es steht, es wird nichts geupdated. Ich sehe das Statement im Enterprise Manager, aber es passiert nichts mehr, es werden auch nicht einzelne Zeilen geupdated, sondern gar nichts. Und so groß und komplex sind die Tabellen mMn nicht...


Aber andere Sache:
Führe ich das Select einzeln aus, erhalte ich nur die Gesamtsumme aller Werte wert2, stimmt also irgendwas nicht; also ein

SQL:
SELECT SUM(t1.wert2)
FROM table1 t1, table2 t2
WHERE t1.wert1 = t2.wert2);

Führt zu einem Gesamtergebnis. Denkfehler?
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück