Umkreissuche via MySQL/SQL nach Postleitzahlen sortieren

Eine einfache Abfrage über SQL mit der man ohne Geo-Datenbank eine Umkreissuche über die PLZ starten kann.

Nicht immer will man für einfachere Anwendungen eine komplette Umkreissuche über eine Geodatenbank implementieren. In viele Fällen reicht es aus, wenn man einfach über SQL anhand einer Postleitzahl diejenigen Einträge aus der Datenbank holt, die numerisch am nächsten an der Zahl dran liegen.

Das Problem ist: Man kann nicht einfach nach PLZ ordnen, weil ja in beide Richtungen sortiert werden muss...

Beispiel: Unsere Basispostleitzahl ist 74626, und wir haben folgende PLZ in der DB:
74626
74627
74628
74629
74630
74625
74624
74623
74622

Die gewünschte Sortierung wäre folglich...
74626
74627
74625
74628
74624
74629
74623
74630
74622


Die Lösung ist relativ einfach, man muss nur drauf kommen (daher ist dieser Blogeintrag als Reminder für mich...)

Code: Alles auswählen
SELECT *
   my_table.*,
   (my_table.zip - $zip_INT) AS zip_diff
   FROM my_table
   WHERE 1
   LIMIT 20
   ORDER BY zip_diff


Man bildet hier die Differenz der gelesenen Postleitzahl und der Basispostleitzahl (hier in der Variable $zip_IN) und gibt dieser einen eigenen Spaltennamen, nach dem man dann wunderbar sortieren kann.




loading




BBcode für diesen Artikel:


HTML-Code mit Link zu diesen Artikel:
Diese Seite zu Mister Wong hinzufügen   Delicious