Autor Beitrag
Camulus
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Di 18.07.06 12:43 
Hallo zusammen,

wir haben ein kleines Problem mir der Sortierung von Adressdatensätzen.

Es geht um eine Akqusieaktion in verschiedenen Postleitzahlengebieten. Ein Callcenter vereinbart Termine mit Kunden die dann den Außendienstmitarbeitern zugeteilt werden. Bis jetzt haben wir 14 Postleitzahlengebiete die durch Außendienstmitarbeiter abgedeckt werden.

Pro Postleitzahlengebiet 10.000 Datensätze. Es kommen allerdings regelmäßig neue Außendienstmitarbeiter mit neuen Postleitzahlengebieten hinzu. Wobei sich die die Grundanzahl natürlich verringert.

Wie können wir die Daten in die Datenbank einsortieren dass wir immer noch eine Streuung zwischen den Postleitzahlengebieten haben?
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Di 18.07.06 12:59 
Hast du da mal ein Beispiel?
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.07.06 13:22 
user profile iconCamulus hat folgendes geschrieben:
...dass wir immer noch eine Streuung zwischen den Postleitzahlengebieten haben?

Bitte genau definieren, was ihr damit meint. "Gleichmäßige Verteilung" genügt mir dabei nicht. Dann müsstet ihr auch erklären, was ihr damit meint.
Das Problem mit der Adressenverteilung hängt unter Anderem davon ab, dass bei einer feinen Streuung auch die Besiedlungsdichte zu berücksichtigen ist.
Deswegen muss man genau wissen, was ihr damit meint und welche Daten zur Verteilungsbestimmung zur Verfügung stehen.
Camulus Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Di 18.07.06 13:29 
es sollen alle Postleitzahlengebiete "möglichst" gleichmäßig bahandelt werden. Die jetzige Anzahl verringert sich natürlich, und es kommen neue dazu. Es geht letztendlich eben darum das die Adressen an den für dieses Postleitzahlengebiet dem zuständigen Außendienstmitarbeiter zugeteilt werden. Wir brauchen eine gleichmäßige Streuung der neuen Postletzahlengebiete in die "vorhandene Datenmenge".
Es sollte halt "gleichmäßig" akquiriert werden. Nicht das für einen Aussendienstmitarbeiter aus den "alten" Postleitzahlengebieten mehr Aufträge anfallen als für einen aus den Postleitzahlengebieten die dann dazu kommen.
Ich hoffe ihr versteht was ich meine;-)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.07.06 13:39 
Es geht also nur um die Anzahl der Postleitzahlen, die verteilt werden sollen und nicht um die tatsächliche Adressenverteilung, wenn ich das richtig verstehe.
Ansatz:
Der einfachste Wege wäre, die neuen mit den alten zu mischen und dann komplett neu zu verteilen an die passenden Aussendienstler. Dabei sollte berücksichtigt werden, dass schon bearbeitete PLZen beim zuständigen Menschen bleiben. Daraus resultiert eine Restmenge, die neu verteilt werden muss. Über die Anzahl der zu vergebenden PLZen und Außendienstler kann man feststellen wie diese verteilt sein müssen. Die schon vergebenen Gebiete müssen dann natürlich vor der Veteilung abgezogen werden. Der Sonderfall, dass schon mehr bearbeitet wurden, als zu verteilen sind, muss natürlich auch berücksichtigt werden.

Habt ihr euch das etwa in der Art vorgestellt?
Camulus Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Di 18.07.06 13:47 
Es geht schon um die eigentlich Adressenverteilung. Die "Kunden" werden von einem Callcenter angerufen und ein Termin wird vereinbart. Dieser Termin wird dann an den Aussendienstmitarbeiter weitergegeben. Zur Zeit haben wir aus 14 Postleitzahlengebieten ca 140000 Datensätze also ca 10000 pro Gebiet. Wenn jetzt ein oder mehrere Postleitzahlengebiete dazukommen sollen diese Datensätze (je 10000) auch in den Datenbestand aufgenommen werden. Uns geht es jetzt darum, daß wir diese neuen Datensätze vernünftig in die betsehenden Daten (140000) eingestreut werden. Es soll ja dann weiter vom Callcenter akquiriert werden und die neuen sollen ja nicht ans Ende der Liste weil dann beispielsweise der Aussendienstmitarbeiter xy erst Termine zugeschoben bekommt, wenn die ersten 140000 abtelefoniert sind.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.07.06 13:55 
Dann würde ich anders vorgehen.
Über die Mitarbeiter DB-Abfrage machen, wieviele Adressen zugeteilt sind. Das Ergebnis merken. Dann die neuen Adressen verteilen. Der MA mit den wenigsten bekommt mehr neue Adressen als die anderen.
Als Kalkulationsbasis hilft Prozentrechnung.
Soviel Prozent, wie der MA mit den wenigsten Adressen weniger hat, muss ihm von den neuen Adressen zugeteilt werden. Bis auf Rundungsfehler dürfte sich eine gute neue Verteilung ergeben.
Camulus Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Di 18.07.06 14:13 
Das ist es auch noch nicht ganz.
Ist für mich bestimmt genauso schwer zu erklären, wie für dich dich da rein zu denken.
Die Adressne sind ja noch niemandem zugeordnet. Wir haben bespielsweise für die Postleitzahlengebiete 40***, 41***, 42***,51***, 50***, etc. jeweils 10.000 Firmenadressen. Diese alle in einer Datenbank. Damit wir da eine Mischung von den Namen, der Branche etc. haben, haben wir die nach Strasse sortiert. Diese Firmen werden angerufen und es wird ein Termin vereinbart. Dann wird der Datensatz mit dem Termin an den Aussendienstmitarbeiter weitergegeben. Das Callcenter ist jetzt nicht Riesengross.
Das sind 10 Arbeitsplätze.
Wenn jetzt neue Aussendienstmitarbeiter eingestellt werden, beispielsweise aus den Postleitzahlengebieten 80***, 81***, 75***, etc. Sollen aus diesen auch jeweils 10000 in den Datenbeestand übernommen werden. Wenn wir die jetzt hinten anhängen wird die Firma xy aus 80*** ja erst wer weiß wann angerufen und ein Termin vereinbart. Das ist natürlich schlecht für den Aussendienstmitarbeiter. Deswegen sollen die so eingetreut werden, daß die zeitnah abtelefoniert werden.
Beispiel: Wir haben 100000 Datensätze. Jetzt kommen 20000 neue dazu.Die müssten ja dann als jeder fünfte Datensatz eingespielt werden.
Die Zuordnung zum Aussendienstmitarbeiter kommt ja erst später. Aber wir wollen halt verhindern, daß neue Aussendienstmitarbeiter erst "so spät" Termine zugestellt bekommen.
crowley
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 406

Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
BeitragVerfasst: Di 18.07.06 14:25 
ganz grob als idee:

ihr fügt die "neuen" adressen mit irgendwas in der richtung ein

ausblenden Quelltext
1:
insert firmenname, strasse, plz, telnr, ort into firmentabelle					


und du fragst sie doch bisher mit

ausblenden Quelltext
1:
select firmenname, strasse, plz, telnr, ort from firmentabelle					


ab. Du sagtest doch, dass ihr die bisher nach Strassennamen sortiert habt... dann sollte das doch auch weiterhin kein problem sein.

ausblenden Quelltext
1:
2:
insert firmenname, strasse, plz, telnr, ort into firmentabelle
order by strasse


ggf. je nach verwendeter datenbankkomponente machst du dann ein requery oder refresh und die neuen daten sind "unter die alten drunter gemischt".
Camulus Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Di 18.07.06 14:40 
Das Problem ist dann nur das wir z.B. schon alle Adressen mit Stassennamen "a" der alten PLZ Gebiete abtelefoniert haben und diese DS dann natürlich nicht mehr in der DB vorhanden sind. wenn ich nun neue Adressen anfüge und diese nach Namen sortiere erhalte ich als "oberste" DS die mit dem Strassenamen "a" der neuen PLZ Gebiete !!!!!!!!!!!
crowley
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 406

Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
BeitragVerfasst: Di 18.07.06 14:48 
hmm... okay... ihr löscht also aus der tabelle alle "abgehandelten" adressen heraus ... denke, dass du dir dann ein neues sortierkriterium suchen musst ;) was für spalten hast du denn sonst noch in dieser tabelle ?

ggf. kannst du ja dann nach dem zweiten buchstaben des strassennamens sortieren, um eine ähnliche "mischung" der adressen erreichen... im nächsten durchgang wieder nach dem ersten oder nach dem dritten buchstaben ... musst nur schauen, dass die strassennamen alle mindestens so viel buchstabens haben, dass du danach auch sortieren kannst ;)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 18.07.06 15:18 
Das klingt für mich alles ein bisschen "bedenklich".
Wenn ihr die Möglichkeit habt, würde ich die Tabelle ändern und ein künstliches Sortierfeld einbauen. Dieses könntet ihr dann für eure Zwecke füllen. Neue Adressen bekommen in diesem Feld als erstes Zeichen eine '0', die alten, schon erreichten eine '9'. Diesen Schlüssel könntet ihr euren entsprechenden Gegebenheiten immer wieder anpassen. Die zweite Stelle könnte dann der erste Buchstabe der Straße sein. Damit hättet ihr eine ähnliche Sortierung wie vorher, nur mit dem Vorteil, dass die neuen zuerst kommen.
Eine Sortierung ohne diese Hilfe wird schwierig. Zumindest fällt mir nichts sinnvolles ein. Über den Aufbau muss man sich natürlich gründlicher Gedanken machen, als ich jetzt hier.
Camulus Threadstarter
Hält's aus hier
Beiträge: 11

Win 2000, Win XP
Borland Delphi 6
BeitragVerfasst: Mi 19.07.06 11:00 
Danke euch. Das hilft uns weiter :D :D :D