miwu_2605 0 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 Hallo zusammen, ich möchte eine Spalte in einer Tabelle aktualisieren. Das Feld soll "anonymisiert" werden. In dem Feld soll aus einer Menge von Werten aus einer anderen Tabelle ein zufälliger Wert gewählt und geschrieben werden. Momentan habe ich das Problem, dass zwar ein zufälliger Wert ausgesucht wird, dieser aber dann in allen geupdateten Datensätzen gleich ist. Ich möchte natürlich, dass der Wert pro Zeile neu zufällig gewählt wird.Wie bekomme ich das hin?Mein momentaner Code: UPDATE L2001.VERTRAGSETBESCHSCHL = (SELECT TOP 1 LIT_KZL FROM L2001.LITERAL WHERE LIT_ART = 'BESALS' AND SPR = 'D' ORDER BY NEWID() );Vielen Dank für Eure Hilfe!
zahni 587 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 Unsere Entwickler machen das so: update xxx.Anschrift set ort = concat('Ort-', char(mod (pk, 1000))); OK ist der PK der Zeile. -Zahni
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Geschrieben 30. Juli 2014 Ehrlich gesagt glaube ich passt das nicht so ganz zu meiner Anforderung oder verstehe ich das falsch?Mit deinem Statement erstellst du in den ganzen Zeilen "Ort XXX -Einträge". Sowas habe ich bei mir hinbekommen.Ich habe das Problem, dass ich es hier mit der SELECT-Abfrage auf die andere Tabelle machen muss. Ich wüsste nicht, wie mir hier dein Besipiel weiterhelfen sollte. Oder stehe ich auf dem Schlauch?
zahni 587 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 (bearbeitet) Warum musst Du zum anonymisieren etwas aus einer anderen Tabelle auslesen? FK-Beziehungen sollte man eh mit eindeutigen numerischen Feldern machen. Das bei Deinem Update die Spalte in allen den Zeilen den gleichen Inhalt hat ist klar. Dein Subselect liefert ein Ergebnis, dass Du mit dem Update in alle Zeilen schreibst. bearbeitet 30. Juli 2014 von zahni
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Geschrieben 30. Juli 2014 Die Tabellen sind weiter miteinander verknüpft. Ich muss aus einem Pool von Werten (Schlüsseln) zufällig einen auswählen, um nachher dann per JOIN auf eine andere Tabelle die Bezeichnung zu dem Schlüssel zu bekommen. Wenn ich einfach blind irgendetwas in die Spalten schreibe, gibt's es dann keine dazugehörige Bezeichnung.
Sunny61 833 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 Lies dir diesen Artikel durch: http://www.tutorials.de/threads/sql-server-zufallszahlen-erzeugen.371088/ Deine Werte aus dem Pool könnten im Vergleich zu dem Artikel die Wert 1,2,3 und 4 sein. Weiß nicht ob das funktionieren kann, einen Versuch ist es wert. Und auch die Kommentare beachten. Alternativ diese Funktion anschauen: http://technet.microsoft.com/de-de/library/ee634569%28v=sql.105%29.aspx Die Zahlen von bis sind die kleinsten und höchsten Schlüssel der anderen Tabelle.
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Geschrieben 30. Juli 2014 was ich noch anmerken möchte: bei mir sind es keine Zahlen, sondern Kürzel wie: ANG, VST, BLL, usw. danke für deine Links... meine anderen Felder habe ich neulich damit problemlos anonymisiert bekommen... also bsp. Ort 67, Name 67 (auch unterschiedlich in jeder Zeile der Tabelle) usw. aber für die Problemstellung finde ich hier leider nichts
zahni 587 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 Daher der hinweise, dass man in jeder Tabelle immer einen numerischen Primary Key haben solltest. Den sollte man auch immer verwenden, um Beziehungen zu anderen Tabellen herzustellen. Ist auch performanter als mit Strings. -Zahni
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Geschrieben 30. Juli 2014 Leider sind das nicht meine Tabellen, sondern die Tabellen einer Personalsoftware namens P&I LOGA :(
zahni 587 Geschrieben 30. Juli 2014 Melden Geschrieben 30. Juli 2014 Dann würde ich die Fa. fragen. Eventuell haben die was in der Schublade.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden