Mysql -Nummerische Nähe finden

Ronald Nickel

Legendäres Mitglied
Hallo an alle SQL-Jünger

ich habe einer DB ein Liste von Kunden mit entsprechendem PLZ-Feld. Nun möchte ich eine PLZ via Formular eingeben und die DB soll mir die meiner PLZ an nächsten stehende Kunden-plz ausgeben. Dabei soll es unerheblich sein ob die ausgegebene PLZ höher oder niedriger ist als die meine.

Es muss nur die numerische nicht geografische Nähe brücksichtigt werden. Ich dachte mal den Befehl NEAR bei MySql gesehen zu haben - habe aber nicht mehr gefunden

hat mir da jemnd ne Idee?
Gruß Ronny
 
Hmm... "WHERE plz > '$eingegebene_plz' OR plz < '$eingegebene_plz' ORDER BY plz ASC Limit 1"

So müsste es gehen... Gruß, Daniel
 
Die Differenz bilden und dann nach dem Absolutbetrag sortieren:

QUOTE Select A.Id, Abs(A.PLZ - @PLZ_Eingabe) As Differenz
From ...
Order By Differenz


Wobei ich nicht auswendig weiß, ob mySql das Sortieren nach einem Aliasnamen zuläßt.

Technisch entspricht das der Lösung von Daniel mit <= statt <.


Doof ist das nur dann, wenn in bestimmten Gebieten sehr unterschiedliche Postleitzahlen eng beieinanderliegen. Aber um das zu lösen bräuchte man Geokoordinaten.
 
Die Lösungsansätze sind nicht schlecht. Bei Daniels Beispiel werden aber die nächst höhere und tiefere gesucht. Klar muss auch die eigene Plz einbezogen werden.

Beispiel:
meine PLZ= 88433

die DB findet in meiner nunmmerischen Nähe 88430 und 88434. Er soll mir un diesem Fall naturlich die 88434 ausgeben weil sie näher an meiner ist als die andere. Ist denn das im Skript vom Dniel gegeben. Welche Prioritäten setzt die DB wenn sie
1. meine PLZ
2. eine unterhalb meiner PLZ
3. eine oberhalb meiner PLZ
findet aber nur eine augeben darf?

Gruß Ronny
 
Nochmals einen Augenblick darüber nachgedacht.

Praktisch ist die Lösung von Daniel falsch (damit auch meine Bemerkung oben in bezug auf diesen Ansatz), weil sie beim Input

10000
50000
70000

und der Frage 50001 die 10000 ausgibt. Die Where-Bedingung läßt praktisch alles durch, die Sortierung geht absolut anstatt in Differenz zur Such-PLZ.

Ansonsten: Wenn die Differenzen gleich sind, ist das immer Zufall, was tatsächlich ausgegeben wird bzw. hängt vom zweiten Sortierkriterium (i.d.R nach dem Primärschlüssel) ab.
 
Hallo,

ups, Jürgen hat recht - hol dir einfach die nächsten drüber und drunter und dann bildest du die differenz und schaust welche kleiner ist.

Gruß, Daniel
 
Na gut die grobe Richtung ist bekannt - dann bastle ich mal was zusammen.
Vielen Dank an Alle.

Gruß Ronny
 
Zurück
Oben