![]() |
Daten innerhalb einer Tabelle vervielfältigen
Hallo zusammen,
ich möchte innerhalb einer Tabelle mehrere Felder updaten. Tabelle (Beispiel)
Ich möchte jetzt die Felder E und F updaten. Die Werte von E und F sollen überall dort eingetragen werden, wo die Felder A, B und C gleich sind mit den Feldern A, B und C der Records, die in G einen Wert haben. Es gibt also für jeden Wert in G mehrere Records, die in den Feldern A, B und C übereinstimmen. Die Werte aus E und F möchte in bei diesen Records updaten. Ich weiß leider nicht, wie ich es besser beschreiben soll. Ich hoffe, ihr versteht mich. :wiejetzt: Das Problem ist, dass die Tabelle nicht ansatzweise Normalisiert ist, aber uralt und ich keine Möglichkeit habe, an der Struktur zu ändern. Es muss also irgendwie anders gehen. Und da brauche ich ein bisschen Unterstützung. Das Ergebnis soll so aussehen:
Wenn mir jemand bei der SQL Anweisung helfen könnte, wäre das himmlisch und ich sehr dankbar. Beste Grüße PistolenPeter |
AW: Daten innerhalb einer Tabelle vervielfältigen
Hat die Tabelle einen Primärschlüssel?
|
AW: Daten innerhalb einer Tabelle vervielfältigen
Mal so ins Blaue geschossen:
Code:
Update tabelle tu
Set E=(Select E FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G <> 0), F=(Select F FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G <> 0) WHERE tu.G = 0 |
AW: Daten innerhalb einer Tabelle vervielfältigen
@mkinzler: leider gibt es keinen PK.
Den könnte ich hinzufügen, das wäre dann nur nichts anderes als eine bessere ROW_NUMBER. @Mikkey: Ich versuch's mal sofort. Grüße PistolenPeter |
AW: Daten innerhalb einer Tabelle vervielfältigen
Ich würde es so versuchen:
SQL-Code:
update (
select t1.a, t1.b, t1.c, t1.e te, t1.f tf, t2.e, t2.f from <Tabelle> t1 join <Tabelle> t2 on t2.a = t1. a and t2.b = t1.b and t2.c = t1.c and t2.g is not null where t1.g is null) set e = t1, f = tf; |
AW: Daten innerhalb einer Tabelle vervielfältigen
@Mikkey:
Funktioniert leider nicht. Es gibt ein Update für eine Zeile, aber die Daten in der Tabelle ändern sich nicht. @mkinzler: Das klappt leider auch nicht. Oracle sagt: SQL-Fehler: ORA-01779: cannot modify a column which maps to a non key-preserved table 01779. 00000 - "cannot modify a column which maps to a non key-preserved table" *Cause: An attempt was made to insert or update columns of a join view which map to a non-key-preserved table. *Action: Modify the underlying base tables directly. Wenn ich das richtig verstehe, funktioniert das nur, wenn es einen Primärschlüssel gibt UND dieser in dem JOIN enthalten ist. Grüße PistolenPeter |
AW: Daten innerhalb einer Tabelle vervielfältigen
Das habe ich berfürchtet
null ist nicht das selbe wie 0
SQL-Code:
Update tabelle tu
Set E=(Select E FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null), F=(Select F FROM tabelle tl WHERE tl.A=tu.A and tl.B=tu.B and tl.B=tu.B AND tl.G is not null) WHERE tu.G is null; |
AW: Daten innerhalb einer Tabelle vervielfältigen
Zitat:
(Naja ein PK ist eigentlich nie falsch, auch wenn er nur eine "Zeilennummer" ist) Gruß K-H |
AW: Daten innerhalb einer Tabelle vervielfältigen
Zitat:
Vielen Dank! PistolenPeter |
AW: Daten innerhalb einer Tabelle vervielfältigen
Zitat:
nein, es ist kein View, aber durch den JOIN entseht ja so etwas wie ein View. Grüße Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz