Update-Problem

19/01/2009 - 11:19 von Michael Schörner | Report spam
Hallo allerseits,

vielleicht hat hier jemand eine Idee, wie ich mein Update-Problem lösen kann
(SQL Server 2005).

Ich habe zwei Tabellen, Termin und Terminposition (adàquat Bestellung u.
Bestellposition). In der Posionstabelle gibt es ein Feld "System" (entspr.
Artikel) und ein Feld "Serialnummer". Die Serialnummern kommen aus SAP und
werden nachts per SSIS-Paket aktualisiert. Dabei wird eine Tabelle Import
gefüllt. Die SAP-Auftragsnummern werden in der Terminpositionstabelle
geführt, worüber ich die Verbindung zu den SAP-Auftràgen herstellen kann.

Soweit so gut und bislang kein Problem beim Update der Serialnummern.
Allerdings kann es vorkommen, das gleiche Systeme mehr als einmal in einem
Termin vorkommen. Diesen muss ich dann jeweils eine andere Serialnummer
zuweisen. Beim normalen Update erhalten Systeme gleicher Nummer immer die
gleiche Serialnummer (erst die eine, dann die andere).

Da ich SAP-Auftragspositionen nicht Terminpositionen gleichsetzen kann,
sondern nur SAP-Auftràge Terminen, muss ich einen Umweg gehen, den ich
bislang noch nicht richtig sehe. Es ist übrigens aus Sicht der
Terminpositionen gleichgültig, welche Position bei gleicher Systemnummer
welche Serialnummer erhàlt.

Performance ist übrigens kein Kriterium, da die Verarbeitung nachts làuft,
wenn niemand auf die DB zugreifen muss.

Hat jemand eine Idee?

Vielen Dank im Voraus.

Viele Grüße,
Michael Schörner
 

Lesen sie die antworten

#1 Michael Schörner
19/01/2009 - 15:26 | Warnen spam
Um das Problem zu verdeutlichen:

Tabelle "Terminpositionen"

ID | Termin | SAP-Auftrag | System | Serialnummer
1 2 12345 10
2 2 12345 11
3 2 12345 10

Hier sind die Serialnummern zu aktualisieren.

SAP-Daten importiert in Tabelle "Import"

Auftrag | System | Serialnummer

12345 10 12345
12345 11 23456
12345 10 34567

Wenn ich jetzt ein Update fahre

UPDATE Terminpositionen SET Serialnummer = i.Serialnummer
FROM Terminpositionen tp, Import i
WHERE tp.[SAP-Auftrag] = i.Auftrag AND tp.System = i.System

bekomme ich vermutlich folgendes Ergebnis in "Terminpositionen":

ID | Termin | SAP-Auftrag | System | Serialnummer
1 2 12345 10 34567
2 2 12345 11 23456
3 2 12345 10 34567

Meine erste Idee war, zwei Cursor gegeneinander laufen zu lassen und jede
Zeile explizit zu aktualisieren. Aber geht das nicht einfacher und
eleganter?

Viele Grüße,
Michael Schörner

Ähnliche fragen