Name, Vorname nur einmal ausgeben, auch wenn Straße unterschiedlich geschrieben

NTDY

Erfahrenes Mitglied
Ich habe die folgende mySQL-Tabelle
Code:
Name  | Vorname| Strasse   | PLZ   | Ort         | Bestellungsnummer
-----------------------------------------------------------------
Zobel | Anne   | Nimmerweg | 11111 | Berlin      | 34
Begel | Anton  | Maxstr.   | 22222 | Brandenburg | 35
Begel | Anton  | Maxstraße | 22222 | Brandenburg | 36
Emile | Nikka  | Zumstraße | 33333 | Hamburg | 37

Als Resultat soll:

Zobel, Anne, Nimmerweg, 11111, Berlin
Begel, Anton, Maxstr., 22222, Brandenburg
Emile, Nikka, Zumstraße, 33333, Hamburg
oder
Zobel, Anne, Nimmerweg, 11111, Berlin
Begel, Anton, Maxstraße, 22222, Brandenburg
Emile, Nikka, Zumstraße, 33333, Hamburg
herauskommen.

Wie zu sehen ist, hat der Benutzer seine Straße zwei mal unterschiedlich eingeben.

Gibt es da eine Möglichkeit?
 
Zuletzt bearbeitet:
Du nimmst nur ein Ergebnis (das Erste zB).. Ansonsten könnte vielleicht ein GROUP BY helfen.

mfg chmee
 
Ich kenne grad keine Funktion die dir das abnimmt.

Wenns nur um 'Str.', 'Strasse' und 'Straße' geht, kann ein REPLACE() weiterhelfen
 
Und was ist wenn ich mich jetzt so eintrage:

Begel | A. | Maxstraße | 22222 | Brandenburg |

und das "A" steht nicht für Anton sondern für Andrea welche die Frau von Anton ist? Soll der Name/die Adresse dann auch nicht ausgegeben werden, oder wenn der Eintrag so aussieht

Begel | Stefan | Maxstraße | 22222 | Brandenburg |

Anton und Stefan sind Brüder. Anton wohnt im Erdgeschoss und Stefan im 2. Stock. Was ist dann?

Je nachdem was du damit erreichen willst, wird es so nicht zum gewünschten Ergebnis führen.
 
Gehen wir mal von einem Idealfall aus, dass es keine Brüder gibt und ein Mensch noch einmal über die Ergebnisse schaut.
 
Ob dieser Idealfall eintritt

Da es ja eine Bestellnummer gibt, gehe ich jetzt mal von einem Shop o.ä. aus. Wenn du den Ablauf jetzt so gestalltest das man sich mit Namen und Adresse einträgt und du dann in einem Zwischenschritt prüfst ob es Adressen mit ähnlichem Straßennamen, Vornamen, ... bereits gibt und diese dann anzeigst?

Hab vor langer Zeit mal so einen ähnlichen Vergleich mit der LEVENSTEIN Funktion gelöst. Hab aber leider die Dateien nicht mehr sonst hätte ich sie mal reingestellt.

Gruß Thomas

Aber hier gibt es ein schönen Beispiel: http://php.net/manual/de/function.levenshtein.php
 
Zuletzt bearbeitet:
Ich habe die folgende mySQL-Tabelle
Code:
Name  | Vorname| Strasse   | PLZ   | Ort         | Bestellungsnummer
-----------------------------------------------------------------
Zobel | Anne   | Nimmerweg | 11111 | Berlin      | 34
Begel | Anton  | Maxstr.   | 22222 | Brandenburg | 35
Begel | Anton  | Maxstraße | 22222 | Brandenburg | 36
Emile | Nikka  | Zumstraße | 33333 | Hamburg | 37

geht mit
SQL:
SELECT Name, Vorname, MAX(Strasse) as Strasse, MAX(PLZ) as PLZ, max(Ort) as ort
    FROM DeineTable
 GROUP BY Name, Vorname

ist aber nur eine krücke. Du solltest langfristig über die Einfürhung normalisierter Tabellen nachdenken (Sprich Tabelle Kunde und Tabelle Bestellung mit KundenNummer).
 
Zuletzt bearbeitet von einem Moderator:
@gorefest
Ganz gefährlich. Du gehst davon aus, dass Vorman und Nachname in Kombination eindeutig sind.
Nur schon in unserer Firma ist dies nicht eindeutig........
 
@gorefest
Ganz gefährlich. Du gehst davon aus, dass Vorman und Nachname in Kombination eindeutig sind.
Nur schon in unserer Firma ist dies nicht eindeutig........

ist richtig. wahrscheinlich muss man tatsächlich die daten erstmal aufbereiten und normalisieren, bevor sie zu gebrauchen sind. der vorschlag mit levenstein ist da schon nicht übel, wenn auch etwas risikoreich.

grüße
gore
 
Ein Risiko hast du mit levenshtein meiner Meinung nach nur dann wenn du damit Änderungen automatisch durchführen würdest.

Wenn es aber wirklich ein Bestellvorgang ist kannst du es doch wie oben beschrieben machen.

- Name und Anschrift wird in Formular eingegeben -> weiter zur nächsten Seite
- hier wird mit levenshtein geprüft ob es für diesen (Nach-) Namen in Verbindung mit dieser Postleitzahl schon einen Eintrag mit einer ähnlichen Straße gibt
--> wenn nicht wird der Name und die Adresse als neuer Eintrag gespeichert
--> wenn doch muss bestätigt werden das man die eingegebene Adresse (Straße) übernehmen will oder man muss eine der vorhandenen als die Richtige auswählen

Eine 100% Sicherheit für doppelte Einträge hast du damit auch nicht aber ich denke es filtert zumindest einen nicht unereblichen Teil raus.

Zum Vergleich würde ich eben den Nachnamen in Verbindung mit der Postleitzahl nehmen. Beim eigenen Nachnamen weiß man ja wohl wie er geschrieben wird und bei der Postleitzahl kann man sich so gut wie nicht verschreiben.


Gruß Thomas
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück