ORACLE Für PLZ mit Orten verknüpfen

DATENBANK
Oracle G10g

TABELLEN
PERSONEN (Vorname, Nachnahme, Strasse, PLZ, Ort)
PLZZUORTEN (PLZ, Ort)

GESUCHT WIRD
Passender SQLplus Befehl

SCENARIO
2 Tabellen (wie oben erwähnt) müssen abgeglichen werden wobei die PLZ aus der Tabelle „PERSONEN“ mit der dazu passenden PLZ aus der Tabelle „PLZZUORTEN“ eingefügt werden (bestehende Daten sollen überschrieben werden).

Wie lautet das dazu passende SQL Script?

Habe lange gesucht über Google für mein Problem aber nicht eine passende Lösung gefunden daher würde mich freuen wenn jemand mir auf die Sprünge helfen könnte oder gar die Lösung kennt sowie diese Postet.

Vielen Dank für eure hoffentlich aussagekräftigen Vorschläge wünscht
Sven

Hallo Sven,

UPDATE PERSONEN P SET P.PLZ = (SELECT O.PLZ FROM PLZZUORTEN O WHERE O.Ort=P.Ort)

Dazu muss aber garantiert sein, dass die Ort-Ort Verknüpfung eindeutig ist

Gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

UPDATE PERSONEN P SET P.PLZ = (SELECT O.PLZ FROM PLZZUORTEN O
WHERE O.Ort=P.Ort)

Dazu muss aber garantiert sein, dass die Ort-Ort Verknüpfung
eindeutig ist

Hallo Ulrich,
so einfach wird das wohl nicht werden (auch wenn dein Ansatz im Prinzip natürlich richtig ist).

Es gibt durchaus Orte, zu denen es mehrere verschiedene PLZs gibt (schau dir nur mal München oder Berlin an) - dann fällt der SQL auf die Nase.
Ausserdem kann die Spalte Ort bei den Personen auch mal abweichende Scheibweisen beinhalten (ich spreche aus leidiger Erfahrung; es ist unglaublich, mit welcher Kreativität manche Sachbearbeiter vor Ort Namens- und Adressfelder bestücken können).

gruss
bernhard

  • Tja…mehr als einen Ansatz kann hier niemand liefern. Die Datenbereinigung, so sie den notwendig werden sollte, muss der OP schon selbst vornehmen. Und die Kreativität der Benutzer mit SQL „abzufangen“, ist zugegenermassen ein eher schwieriges Unterfangen…

Gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Sven,

UPDATE PERSONEN P SET P.PLZ = (SELECT O.PLZ FROM PLZZUORTEN O
WHERE O.Ort=P.Ort)

Dazu muss aber garantiert sein, dass die Ort-Ort Verknüpfung
eindeutig ist

Danke für deine schnelle Antwort/Lösungsvorschlag hilft mir für mein Projekt sehr weiter. Da eine deratige Verknüpfung wie in meinem Scenario generell bei manchen Orten nicht eindeutig ist, was mir klar war aber auch nur als Beispiel gedacht war. Daher keine Angst deine Mühen waren nicht umsonst ich nutze dein SQL-Beispiel für ein anderes das eigentlich bestimmte Scenario.

Soabld mein Projekt abgeschlossen ist werde ich mich zu gegebener Zeit mit einem Einkaufsgutschein in Höhe von 15,- EUR bei einem Mindestwarenwert von 250 EUR revangieren. Dieser Gutschein gilt explizit nut für meinen bald eröffnenden Store (Elektronik, PC, Software, Bürobedarf sowie vieles mehr).

Da ich keine Werbung für meinen Store in diesem Forum machen möchte werde ich den Link zum Store sobald Fertig (wird Ende des Jahres/Anfang nächsten Jahres fertig sein) an deine e-Mail-Adresse senden inkl. des Gutscheines ich hoffe dir hiermit eine kleine freude für deine Hilfsbereitschaft machen zu können - Du ahnst gar nicht wie sehr du mein Projekt weiter gebracht hast.

Gruß
Sven

PS: Die passiven Leser sind selbstverständlich aufgefordert eine evtl. bessere Lösung zu nennen die bei sehr großen Datenmengen noch schneller effizienter funktioniert als die genannte. Dieser erhalten dann ebenfalls einen Einkaufsgutschein für meinen Store in Höhe von 15 EUR (Mindestbestellwert 250 EUR). Wobei in diesem Fall nur effizientere bzw. komplexere Lösungen die z. B. auch eine Doppelung des Datensatzes berücksichtigen zählen.

UPDATE PERSONEN P SET P.PLZ = (SELECT O.PLZ FROM PLZZUORTEN O
WHERE O.Ort=P.Ort)

Dazu muss aber garantiert sein, dass die Ort-Ort Verknüpfung
eindeutig ist

[…]

Es gibt durchaus Orte, zu denen es mehrere verschiedene PLZs
gibt (schau dir nur mal München oder Berlin an) - dann fällt
der SQL auf die Nase.
Ausserdem kann die Spalte Ort bei den Personen auch mal
abweichende Scheibweisen beinhalten (ich spreche aus leidiger
Erfahrung; es ist unglaublich, mit welcher Kreativität manche
Sachbearbeiter vor Ort Namens- und Adressfelder bestücken
können).

An das habe ich auch gedacht (habe nur nichts dazu geschrieben um zu sehen ob jemand daran denkt bzw. das Problem sogar gleich löst, wollte nicht die eine Lösung riskieren die ich für ein anders Scenario dringend gebraucht habe) freut mich aber dennoch das sie/du uns auf dieses Problem aufmerksam gemacht haben/hast.

Da dieser Tipp dennoch ein Hilfreich verdient hat (hätte ich ja nicht daran Denken können sowie aber sehr essentiell ist) werde ich sie/dich sobald mein Store eröffnet wurde (Elektronik, PC, Software, Büromaterial sowie vieles mehr) ebenfalls einen Gutschein in Höhe von 15,- EUR (Mindestwarenwert: 250 EUR) zukommen lassen, um mich zu revangieren/zu bedanken sowie ihnen/dir eine freude zu bereiten.

Sie/Du erhalten/erhälst eine e-Mail von mir in dem der Link zum Shop inkl. des Gutscheins erhalten sein wird - sobald dieser eröffnet wurde.

Gruß
Sven

PS: In dem meisten Foren wird das „Du“ verwendet mir ist aber vor einigen Minuten aufgefallen als ich einige Posts durchgelesen habe das dort nicht immer mit dem persönlichen „Du“ geschrieben wird daher habe ich beide varianten geschrieben - Bitte passende Variante Auswählen.

UPDATE PERSONEN P SET P.PLZ = (SELECT O.PLZ FROM PLZZUORTEN O
WHERE O.Ort=P.Ort)

Dazu muss aber garantiert sein, dass die Ort-Ort Verknüpfung
eindeutig ist

[…]

Es gibt durchaus Orte, zu denen es mehrere verschiedene PLZs
gibt (schau dir nur mal München oder Berlin an) - dann fällt
der SQL auf die Nase.
Ausserdem kann die Spalte Ort bei den Personen auch mal
abweichende Scheibweisen beinhalten (ich spreche aus leidiger
Erfahrung; es ist unglaublich, mit welcher Kreativität manche
Sachbearbeiter vor Ort Namens- und Adressfelder bestücken
können).

An das habe ich auch gedacht (habe nur nichts dazu geschrieben
um zu sehen ob jemand daran denkt bzw. das Problem sogar
gleich löst, wollte nicht die eine Lösung riskieren die ich
für ein anders Scenario dringend gebraucht habe) freut mich
aber dennoch das sie/du uns auf dieses Problem aufmerksam
gemacht haben/hast.

: gelöscht :

Gruß
Sven

Hallo Sven,

solche Checks sollte man bei der Eingabe machen, da manche Leute bei Ortsangaben auch Unterorte (53639 Thomasberg statt Königswinter) angeben. Falls Du dazu eine Datenquelle benötigt, sieh Dir mal auf meiner Homepage (http://www.familieverweyen.de) das Thema opengeodb an.

Ansonsten sollte man nicht direkt Updaten sondern einen Abgleich (SQL technisch JOIN) der Faktentabelle PERSONEN mit der (Lookup-)Tabelle PLZZUORTEN ausführen, am besten mit einer WHERE-Bedingung auf ungleiche Ortsnamen.

MfG Georg V.

Nur aus Intersse: Hattest Du übrigens schon erwähnt, welche Datenbank und Software Du verwendest?

[…]

solche Checks sollte man bei der Eingabe machen, da manche
Leute bei Ortsangaben auch Unterorte (53639 Thomasberg statt
Königswinter) angeben. Falls Du dazu eine Datenquelle
benötigt, sieh Dir mal auf meiner Homepage
(http://www.familieverweyen.de) das Thema opengeodb an.

Vielen Dank für diesen Tipp habe mich ihre Websitre angesehen wirkt macht einen sehr professionell Eindruck auf mich, alles wirkt durchdacht.

Die Datenbank werde ich mir einmal ansehen wenn ich etwas mehr Zeit habe als jetzt. Vielen Dank. Aus diesem Grunde werden sie auch einen Gutschein für meinen Store per e-Mail erhalten werden im Wert von 15,- EUR (Mindestwarenwert: 250 EUR). Um Ihnen einek leine Freude zu bereiten für ihre Gedanken sowie Mühen die sie aufgewendet haben.

Ansonsten sollte man nicht direkt Updaten sondern einen
Abgleich (SQL technisch JOIN) der Faktentabelle PERSONEN mit
der (Lookup-)Tabelle PLZZUORTEN ausführen, am besten mit einer
WHERE-Bedingung auf ungleiche Ortsnamen.

Das gleiche habe ich mir auch Gedacht mit einer WHERE Bedingung es zu Lösen damit habe ich schon viele Probleme in der Vergangenheit gelöst. Da ich aber die Lösuing für ein anderes Scenario benötigt habe sowie das PLZ, ORT Beispiel nur deswegen gebracht habe weil ich nicht meine interna Preisgeben kann (Konkurrenz) mir die Komplexität bekannt war um eben den besten Ansatzpunkt zu bekommen der Möglich ist. Bin dennoch sehr froh das professionelle Dienstleister sich darüber Gedanken machen da sonst für einen Anfänger eine sehr große Überraschung bevorsteht wenn die Ortangaben mit falschen Orten ersetzt wurden, an dieses habe ich bereits Gedacht.

Nur aus Intersse: Hattest Du übrigens schon erwähnt, welche
Datenbank und Software Du verwendest?

Die Datenbank (Oracle G10) habe ich bereits in meinem Ursprungsposting genannt. Mehr kann ich leider nicht Beantworten (ich weiß sie sind neugierig) aber schließlich schauen auch meine Konkurrenten auf solche Posts von mir sowie wüssten in diesem Fall mit welcher Backgroundsoftware ich arbeite - ich denke sie werden das verstehen. Mein Unternehmen ist zwar noch nicht so groß aber dennoch wenn man etwas macht ist man eben gar nicht oder nur ganz dabei ich mache mir lieber einmal mehrere Gedanken (Multidimensional) als einen (großen) Fehler zu machen.

Gruß
Sven