Name+Adresse in einer Spalte.. wie nur Name auslesen
Folgendes Problem, habe hier eine Tabelle mit dem Feld "ID" + ""Kontakt".
Über eine Suchfunktion soll nun per Formulareingabe der Name aus "Kontakt" gesucht werden. Sucht man nun nach "Anna", dann wird nicht nur der Name Anna ausgewählt, sondern auch Straßen oder Orte bei denen "ANNA" vorkommt... Hat jemand eine Idee das Problem zu lösen? Dachte zuerst eine extra Spalte "Name" zu erstellen und die Suche auf diese Spalte einzustellen, allerdings sind tausende von Einträgen in der Tabelle. Würde Tage oder Wochen dauern, das von Hand einzutragen. Die Tabelle sieht z.B. so aus ID | Kontakt ================ 1 | Mueller, Klaus Hauptstrasse 1 12345 Berlin 2 | Meier Hermann In der Gosse 2 12345 Berlin 3 | Helmut Bahnhofstr 2 12345 Berlin ... |
Re: Name+Adresse in einer Spalte.. wie nur Name auslesen
Zitat:
Das umtragen in die neuen Spalten kannst du ja über ein Script erledigen. EDIT: Mein Vorschlag für die Abfrage war Schwachsinn, da das Komma ja nicht den Namen vom Rest trennt. |
nunja, ich würde sogar sagen, mit einer spalte für "Kontakt" kannst du das ganze vergessen.
Was ist bei Doppelnamen, zweiten Vornamen, etc? Du hast einen Abstand als trennzeichen, das ist nicht gerade sehr gut. Wenn ich "Johann Wolfgang von Goethe" heisse, wie kriegst du raus, was mein vorname und was mein nachname ist? (im vornamen und im nachnamen ist ein abstand) nach deiner Schreibweise wäre das dann von Goethe Johann Wolfgang Strassennr. 1 10312 Berlin Wenn du das jetzt ausliest, hast du also: Nachname: von Vorname: Goethe Straße: Johann Hausnummer: Wolfgang Postleitzahl: Strassennr. Stadt: 1 ich empfehle dir DRINGEND das alles in unterschiedliche Spalten zu tun. Kleiner tip: wenn du es wirklich clever machen möchtest, verwende für Hausnummern und Postleitzahlen char bzw. varchar felder, weil: Hausnummer 17/Stiege 2 oder Hausnr. 11A, bzw. das verrückteste sind die Addresseon von den Studentenwohnungen in Berlin, die sehen beispielsweise so aus: Aristotelessteig 88.10.04.99 (88 ist die verwaltungsnr. des gebäudes, 10 ist die Hausnummer, die allerdings in wirklichkeit 6 ist, 04 bedeuted im vierten Stock und 99 ist dann die Wohnungsnummer in dem Stock.) Das selbe für Postleitzahlen: In Irland (oder England?) sind Buchstaben in den Postleitzahlen enthalten, in Deutschland waren Postleitzahlen früher nur vierstellig, heute sind sie fünfstellig. in amerika haben sie meines wissens nach neun Stellen. Als Alternative könntest du natürlich 3D GPS koordinaten in der Datenbank speichern, aber ich denke es wäre verdammt schwer, an die ranzukommen ;) Wie gesagt, ich empfehle dir ebenfalls DRINGENDST diese Tabelle zu ändern. Nur ein paar beispiele was sonst noch probleme machen könnte: Wie überprüfst du, welche leute in welchem Bundesland wohnen? (wäre für viele sachen wichtig) Ich versichere dir, dass das verdammt viel schwerer ist, als du denkst, da es beispielsweise eine "Berlinerstraße" gibt, aber auch "Berlin-Mahlsdorf". Du kannst also nicht nach einem Berlin ganz am ende des Strings suchen, da es wahrscheinlich nicht immer dort zu finden ist ("Berlin-Mahlsdorf") du kannst es auch nicht irgendwo im text suchen, da es ja vielleicht eine Berlinerstraße in München gibt... Usw. Du kannst auch nicht einfach herausfinden, wie viele leute aus Berlin kommen - das ginge sonst mit einem MYSQL befehl: select count(*) from kontakte group by wohnort. Eigentlich brauchst du für soetwas nicht eine datenbank, ich denke ehrlich, dass du dir da mit textfiles ne menge arbeit ersparen würdest, und die performance, die bei textfiles abgeht, machst du mit deinen string operationen locker wieder wett... wie gesagt: ändere diese tabelle bitte! Du ersparst dir SEHR viel ärger! lg matt |
Zitat:
|
naja also ich würde es in dem fall mit textdateien machen:
jeder eintrag eine textdatei, die folgendes enthält: Code:
<? aber mal ernsthaft: natürlich ist es mit einer datenbank viel bequemer und einfacher (man muss sich halt das ganze etwas abstrahieren, aber das ist es schon) lg matt |
Naja, sagen wir mal so: Verglichen mit der jetztigen Version wäre eine Lösung mit Textdateien schon sehr gut ;-)
|
Die Frage ist nun wie weiter?
Es ist klar, das Ganze MUSS geändert werden. Ich würde von Hand jeden Datensatz wie folgt nachbearbeiten. In den bestehenden Zellen die Reihenfolge so ändern dass da steht: Name; Vorname; Str; Nr; PLZ; Ort Immer auch ";" einfügen. Damit haben wir eine gewisse normalisierung und die bestehende Tabelle sollte weiterverwendet werden können. Wenn alle Sätze (nach einer Ewigkeit!) überarbeitet sind, eine neue Tabelle anlegen und die Alte mit csv hineinkopieren. |
hm nunja, ich hab ne idee, die etwas arbeit spart und zwar:
man liest alle datensätze aus, macht einen "Explode" auf die kontaktdaten und sieht, ob das resultierende Array die Länge von 6 hat (Vorname, Nachname, Straße, Hausnr., Plz, Ort) wenn das der fall ist, kann man davon ausgehen, dass es eine "normale" addresse ist und sie direkt portieren udn den alten datensatz löschen. Dannach muss man wohl oder übel mit der Hand durchgehen... :/ |
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:12:45 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.