AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Generieren von Beispieladressen
Thema durchsuchen
Ansicht
Themen-Optionen

Generieren von Beispieladressen

Ein Thema von Zottel · begonnen am 16. Apr 2005 · letzter Beitrag vom 16. Apr 2005
Antwort Antwort
Zottel
(Gast)

n/a Beiträge
 
#1

Generieren von Beispieladressen

  Alt 16. Apr 2005, 13:47
Datenbank: MSSQL • Version: 2000 • Zugriff über: SDAC/Corelabs
Hi Ihr,
ich steh mal wieder aufm Schlauch....
Ich habe eine AdressTabelle, in der vorname, nachname, Strasse u.s.w. stehen.
Um Testdaten zu generieren, will ich jetzt bei jeder Adresse z.b. den vornamen aus einer anderen Tabelle in zufälliger Reihenfolge nehmen.

mein Versuch:
UPDATE tbl_adressen SET vorname=(SELECT top 1 vorname FROM tbl_vornamen ORER BY newid())
klappt nicht.
er sucht zwar einen vornamen per zufall raus, aber weißt den gleichen jeder adresse zu.
hat einer evtl. ne idee?
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 13:50
Hi.

Zitat von Zottel:
mein Versuch:
UPDATE tbl_adressen SET vorname=(SELECT top 1 vorname FROM tbl_vornamen ORER BY newid())
klappt nicht.
er sucht zwar einen vornamen per zufall raus, aber weißt den gleichen jeder adresse zu.
hat einer evtl. ne idee?
[edit] -- Was hab ich hier nur für nen Mist geschrieben -- [/edit]

Mit der Subquery stimmt was nicht... Marabu kennt sich mit sowas besser aus als ich...

(übrigens: Die DP hat nen SQL-Code-Formatter. Benutze doch das nächste Mal die [ sql ]-Tags...)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 13:56
Deine SubQuery wird einmal ausgeführt und der dann ermittelte Vornamen wird dann in alle deine Adressen eingetragen - vielleicht nicht so gewollt, aber so hast du es beauftragt.
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#4

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 14:14
Zitat:
vielleicht nicht so gewollt, aber so hast du es beauftragt
Gibt es dafür auch ne lösung, den subquery für alle Zeilen einzeln zu machen?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 14:30
Zitat von Zottel:
Gibt es dafür auch ne lösung, den subquery für alle Zeilen einzeln zu machen?
Mi einer Stored Procedure kannst Du das.

Aber warum so aufwändig? Reicht nicht auch etwas wie (sinngemäß)

Code:
'Vorname' + STRING(RecNo)
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#6

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 15:05
Zitat:
Aber warum so aufwändig? Reicht nicht auch etwas wie (sinngemäß)
ich habe bereits 16 mio kundenadressen. allerdings sind da auch ne menge anderer werte dabei. ich muss die daten jetzt von jemandem bearbeiten lassen und dafür die kundenadressen verstümmeln. bevor ich jetzt die ganzen zusätzlichen daten und verknüpfungen zu anderen tabellen neu aufbaue, setze ich die adressen lieber per zufall neu zusammen und habe dadurch nicht existierende kunden, die aber kundenbezogene daten haben. Somit gibs mit unserem Datenschutzbeauftragten auch keine probleme

hmm... dann schau ich mir mal an, wie ich das in eine sp reinkriege.....
hast du evtl. nen denkansatz?
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 15:18
Hi,

Du musst im Prinzip alle Datensätze nacheinander durchgehen und dann Deine Abfrage laufen lassen.

Vielleicht ist es für DIch einfacher ein Programm zu schreiben, das das für Dich erledigt, anch dem Motto:

* Select ID From Adresse;
* Alle ID's durchgehen
* Einen Zufallswert generieren, der auf einen Vornamen / Namen / Straße / Ort verweist
* Die Adresse mit den durch die Zugallszaheln ermittelten Werten zusammensetzen
* Per Update in die Datenbank schreiben.


So kannst Du dann auch alle anderen Tabellen bearbeiten.

Alternative wäre ne StoredProcedure, die in der Ausführungszeit sicherlich etwas schneller wäre, da kenne ich mich im MS SQL-Server aber nicht gut genug aus um Dir zu helfen...

Lemmy
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#8

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 15:39
hi lemmy,

das mit dem extra-programm dachte ich mir auch schon. wäre die einfachste lösung. Aber wenn das mit ner SP geht, dann sollte ich lieber versuchen es damit zu machen.
mal schauen, ob ich vielleicht nen beispiel für ne SP finde, die zeilenweise die tabelle ändert.
bisher habe ich noch nichts gefunden
aber der tag ist ja noch lang
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#9

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 16:14
haha,
habs geschafft. Mit ner Sp und mit nem cursor klappt das.
vielen dank
  Mit Zitat antworten Zitat
Zottel
(Gast)

n/a Beiträge
 
#10

Re: Generieren von Beispieladressen

  Alt 16. Apr 2005, 16:39
Achso:
sollte es jemanden interressieren, oder er steht vor dem gleichen problem, hier meine, jetzt eingesetzte, Lösung:
SQL-Code:
CREATE PROCEDURE ChangeAdresses AS

declare @adc_New_vorname varchar(250)
declare @adc_id int

declare adccursor cursor for
  select id from adc for read only

open adccursor
while(0=0)
  begin
    fetch next from adccursor into @adc_id
    if (@@fetch_status<>0) break
    set @adc_new_vorname = (select top 1 vorname from vornamen order by newid() )
    update adc set vorname=@adc_new_vorname where id=@adc_id
  end
close adccursor
deallocate adccursor
Sollte jemand eine bessere und schnellere Idee haben, immer her damit
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz