Hallo,
wie immer stehe ich vor einem Problem. Ich programmiere ein Portal wo sich User anmelden können und nach Usern suchen können.
User können auch sehen wie weit andere User von ihm entfernt sind. Dafür habe ich das hier verwendet:
http://www.tutorials.de/content/1314-php-klasse-fuer-ortsbezogene-umkreissuche.html
Nun bin ich bei der "Suche" auf die Problematik bei der Sortierung gestoßen. Ich wollte gern, dass man User nach Entfernung sortieren kann unabhängig nach der Umkreissuche. Und das bei allen Usern.
Momentan habe ich folgende Tabellen:
geodb_locations
- id, country, plz, name, lat, lon
wi_user
- username, plz ....
Jetzt weiß ich leider nicht, wie es nun schaffe, User nach Entfernung zu sortieren unabhängig von der Umkreissuche.
Das erste was mir in den Sinn kam, war das ich nun eine 3. Tabelle einsetze:
wi_user_geo_search
- plz1
- plz2
- distance
Und so mir die Distanzen in die DB abspeichere. Das Ding ist halt, das es 21.464 Datensätze an PLZs gibt, das heißt, ich würde dafür eine betrachliche Menge an Datensätzen abspeichern. Dürften so um die 500 Millionen sein ^^.
Ich hoffe ihr versteht was ich vorhabe und wie die Problematik gemeint ist.
So sieht zum Beispiel meine SQL-Abfrage für die Umkreissuche aus:
Mit dieser SQL Abfrage, hole ich mir gleichzeitig die Userdaten und den Datensatz aus wi_user_geo_search wo die Distanzen der einzelnen PLZ drin stehen. Und mit "wi_user_geo_search.distance <=10" gebe ich die Distance die ich haben will an, hier 10km.
Zuvor habe ich eine Abfrage eingebaut, die prüft ob der Datensatz mit der 1. PLZ und der 2.PLZ in der "wi_user_geo_search" vorhanden ist oder nicht, dementsprechend legt er es an oder nicht.
Ich weiß momentan nicht ob ich generell auf den richtigen Weg bin, momentan bin ich mit der Lösung eigentlich ein bißchen unzufrieden. Und ich bin mir sicher, das es noch evlt. noch eine elegantere Lösung als meine gibt. Bloß momentan weiß ich nicht weiter. Ich hoffe ihr habt mir einen Rat, Denkanstoß etc.
Danke
Gruß
wie immer stehe ich vor einem Problem. Ich programmiere ein Portal wo sich User anmelden können und nach Usern suchen können.
User können auch sehen wie weit andere User von ihm entfernt sind. Dafür habe ich das hier verwendet:
http://www.tutorials.de/content/1314-php-klasse-fuer-ortsbezogene-umkreissuche.html
Nun bin ich bei der "Suche" auf die Problematik bei der Sortierung gestoßen. Ich wollte gern, dass man User nach Entfernung sortieren kann unabhängig nach der Umkreissuche. Und das bei allen Usern.
Momentan habe ich folgende Tabellen:
geodb_locations
- id, country, plz, name, lat, lon
wi_user
- username, plz ....
Jetzt weiß ich leider nicht, wie es nun schaffe, User nach Entfernung zu sortieren unabhängig von der Umkreissuche.
Das erste was mir in den Sinn kam, war das ich nun eine 3. Tabelle einsetze:
wi_user_geo_search
- plz1
- plz2
- distance
Und so mir die Distanzen in die DB abspeichere. Das Ding ist halt, das es 21.464 Datensätze an PLZs gibt, das heißt, ich würde dafür eine betrachliche Menge an Datensätzen abspeichern. Dürften so um die 500 Millionen sein ^^.
Ich hoffe ihr versteht was ich vorhabe und wie die Problematik gemeint ist.
So sieht zum Beispiel meine SQL-Abfrage für die Umkreissuche aus:
SQL:
SELECT
wi_user_geo_search.*,
wi_user.*
FROM
wi_user_geo_search
JOIN
wi_user
ON
wi_user.user_plz=IF(wi_user_geo_search.plz1 <> '72202', wi_user_geo_search.plz1, wi_user_geo_search.plz2)
WHERE
(wi_user.user_relat='0' OR wi_user.user_relat='')
AND
(wi_user_geo_search.plz1='72202' OR wi_user_geo_search.plz2='72202')
AND
wi_user_geo_search.distance <=10
AND
NOT wi_user.id='18'
AND
NOT wi_user.id=0
GROUP BY
IF(wi_user_geo_search.plz1 <> '72202', wi_user_geo_search.plz1, wi_user_geo_search.plz2) ORDER BY user_register_date DESC LIMIT 0,20
Mit dieser SQL Abfrage, hole ich mir gleichzeitig die Userdaten und den Datensatz aus wi_user_geo_search wo die Distanzen der einzelnen PLZ drin stehen. Und mit "wi_user_geo_search.distance <=10" gebe ich die Distance die ich haben will an, hier 10km.
Zuvor habe ich eine Abfrage eingebaut, die prüft ob der Datensatz mit der 1. PLZ und der 2.PLZ in der "wi_user_geo_search" vorhanden ist oder nicht, dementsprechend legt er es an oder nicht.
Ich weiß momentan nicht ob ich generell auf den richtigen Weg bin, momentan bin ich mit der Lösung eigentlich ein bißchen unzufrieden. Und ich bin mir sicher, das es noch evlt. noch eine elegantere Lösung als meine gibt. Bloß momentan weiß ich nicht weiter. Ich hoffe ihr habt mir einen Rat, Denkanstoß etc.
Danke
Gruß
Zuletzt bearbeitet von einem Moderator: