miwu_2605 0 Geschrieben 30. Juli 2014 Melden Teilen 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! Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 30. Juli 2014 Melden Teilen 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 Zitieren Link zu diesem Kommentar
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Teilen 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? Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 30. Juli 2014 Melden Teilen 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 Zitieren Link zu diesem Kommentar
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Teilen 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. Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 30. Juli 2014 Melden Teilen 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. Zitieren Link zu diesem Kommentar
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 30. Juli 2014 Melden Teilen 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 Zitieren Link zu diesem Kommentar
miwu_2605 0 Geschrieben 30. Juli 2014 Autor Melden Teilen Geschrieben 30. Juli 2014 Leider sind das nicht meine Tabellen, sondern die Tabellen einer Personalsoftware namens P&I LOGA :( Zitieren Link zu diesem Kommentar
zahni 550 Geschrieben 30. Juli 2014 Melden Teilen Geschrieben 30. Juli 2014 Dann würde ich die Fa. fragen. Eventuell haben die was in der Schublade. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.