Update statement

18/01/2011 - 10:21 von Richard Ohl | Report spam
Hallo,
ich bin nicht sicher, ob noch jemand hier liest, aber ich versuche es mal.
Ich habe das Problem, dass ich zwei Datenbestànde zusammenführen muss und
ich das Update-Statement nicht hinbekomme. Das (externe) Ziel war die
Neuzuordnung von IDs, damit keine Duplikate, unabhàngig vom Herausgeber,
mehr vorkommen. Ich würde mich über Hilfe sehr freuen.

Tabelle 1 (PK ist ID + Herausgeber + Datum)
Herausgeber ist immer 0 oder 1.
ID Herausgeber Herausgabedatum Daten...
...
12746 1 2010-05-22 00:00:00.000 AAA
12746 0 2010-03-12 00:00:00.000 BBB
12756 0 2010-09-24 00:00:00.000 CCC
12756 0 2011-01-04 00:00:00.000 BBB
13452 0 2011-01-02 00:00:00.000 CCC
..
34792 1 2011-01-09 00:00:00.000 AAA

Tabelle 2:
Old_ID New_ID Herausgeber
12746 12756 0
12746 34792 1
12756 13452 0
... 34000 weitere Datensàtze...
usw.

In der Tabelle 1 sollen alle Datensàtze mit einem Datum vor 2011 auf die
neue ID geàndert werden, Herausgeber (obwohl theoretisch nicht mehr zur
Unterscheidung nötig) und Datum bleiben dabei unveràndert.

Das Problem ist ja nun, wenn ich 12746 auf 12756 (Herausgeber 0) àndere,
muss ich vorher 12756 auf 13452 àndern - und vorher natürlich 13452 auf was
auch immer dessen neue ID ist.

Tabelle 1 soll nach der Änderung so aussehen:
ID Herausgeber Herausgabedatum Daten...
...
12756 0 2010-03-12 00:00:00.000 BBB
12756 0 2011-01-04 00:00:00.000 BBB
..
13452 0 2010-09-24 00:00:00.000 CCC
13452 0 2011-01-02 00:00:00.000 CCC
..
34792 1 2010-05-22 00:00:00.000 AAA
34792 1 2011-01-09 00:00:00.000 AAA


Ich wage mich momentan nicht an das Update-Statement, weil ich 40.000
Datensàtze àndern muss.
Kann jemand helfen?

Herzlichen Dank im Voraus!
Richard
 

Lesen sie die antworten

#1 Hannes Brunner
18/01/2011 - 11:32 | Warnen spam
Hallo Richard,

Am 18.01.2011 10:21, schrieb Richard Ohl:
Hallo,
ich bin nicht sicher, ob noch jemand hier liest, aber ich versuche es mal.



Old habits die hard...

Ich habe das Problem, dass ich zwei Datenbestànde zusammenführen muss und
ich das Update-Statement nicht hinbekomme. Das (externe) Ziel war die
Neuzuordnung von IDs, damit keine Duplikate, unabhàngig vom Herausgeber,
mehr vorkommen. Ich würde mich über Hilfe sehr freuen.

Tabelle 1 (PK ist ID + Herausgeber + Datum)
Herausgeber ist immer 0 oder 1.
ID Herausgeber Herausgabedatum Daten...
...
12746 1 2010-05-22 00:00:00.000 AAA
12746 0 2010-03-12 00:00:00.000 BBB
12756 0 2010-09-24 00:00:00.000 CCC
12756 0 2011-01-04 00:00:00.000 BBB
13452 0 2011-01-02 00:00:00.000 CCC
..
34792 1 2011-01-09 00:00:00.000 AAA

Tabelle 2:
Old_ID New_ID Herausgeber
12746 12756 0
12746 34792 1
12756 13452 0
... 34000 weitere Datensàtze...
usw.

In der Tabelle 1 sollen alle Datensàtze mit einem Datum vor 2011 auf die
neue ID geàndert werden, Herausgeber (obwohl theoretisch nicht mehr zur
Unterscheidung nötig) und Datum bleiben dabei unveràndert.

Das Problem ist ja nun, wenn ich 12746 auf 12756 (Herausgeber 0) àndere,
muss ich vorher 12756 auf 13452 àndern - und vorher natürlich 13452 auf was
auch immer dessen neue ID ist.

Tabelle 1 soll nach der Änderung so aussehen:
ID Herausgeber Herausgabedatum Daten...
...
12756 0 2010-03-12 00:00:00.000 BBB
12756 0 2011-01-04 00:00:00.000 BBB
..
13452 0 2010-09-24 00:00:00.000 CCC
13452 0 2011-01-02 00:00:00.000 CCC
..
34792 1 2010-05-22 00:00:00.000 AAA
34792 1 2011-01-09 00:00:00.000 AAA

Ich wage mich momentan nicht an das Update-Statement, weil ich 40.000
Datensàtze àndern muss.
Kann jemand helfen?



Ich fürchte, das wird nicht in einem Update-Befehl zu machen sein,
sondern nur iterativ:

DECLARE @rowcount int

SET @rowcount = 1

WHILE @rowcount <> 0 BEGIN

UPDATE Tabelle1
SET ID = t2.New_ID
FROM Tabelle1 t1 INNER JOIN Tabelle2 t2
ON t1.ID = t2.OldID
AND t1.Herausgeber = t2.Herausgeber
WHERE NOT EXISTS(SELECT * FROM Tabelle1 t3
WHERE t3.ID = t2.New_ID)

SELECT @rowcount = @@rowcount

END

HTH
Hannes

Ähnliche fragen