Hallo zusammen,
ich bin gerade am verzweifeln, da ich bei meiner ersten JOIN-Abfrage gleich eine riesige Abfrage bewältigen muß. Für Euch vielleicht kein Problem. Hier also kurz die Erklärung:
Ich hab zwei Tabellen:
user (mit allen Mitgliedsdaten)
geodb (mit koordinaten, plz und so fort)
Bisher frage ich alle Mitglieder aus der user-Tabelle bereits über eine größere WHERE-Abfrage mit diversen Kriterien ab:
(sehr stark vereinfacht)
Weiter möchte ich mir alle Mitglieder ausgeben lassen, welche innerhalb eines bestimmten Umkreises wohnen. Nun kommt die zweite Tabelle ins Spiel. Hier ermittle ich mit unten stehender Abfrage aus Posting http://www.php-resource.de/forum/showthread/t-5180.html
alle PLZ mit Angabe der Entfernung, welche sich innerhalb einer bestimmten Distanz zur Ausgangs-PLZ befinden:
Was jetzt kommt, kann man sich ja schon fast denken. Über nen JOIN möchte ich jetzt diese ermittelten PLZen als zusätzliches Selektionskriterium für die User verwenden. Weiter soll die hier ermittelte Distance auch bei jedem User mit ausgegeben werden. Weiter möchte ich alternativ beide ORDER BY-Kriterien (DISTANCE und lastlogin), optimalerweise primär nach Distanz und sekundär nach lastlogin anwenden.
Hat einer von Euch Cracks hier vielleicht ne Idee oder gar ne Lösung auf Lager?
Viele Grüße,
Friedward
ich bin gerade am verzweifeln, da ich bei meiner ersten JOIN-Abfrage gleich eine riesige Abfrage bewältigen muß. Für Euch vielleicht kein Problem. Hier also kurz die Erklärung:
Ich hab zwei Tabellen:
user (mit allen Mitgliedsdaten)
geodb (mit koordinaten, plz und so fort)
Bisher frage ich alle Mitglieder aus der user-Tabelle bereits über eine größere WHERE-Abfrage mit diversen Kriterien ab:
(sehr stark vereinfacht)
PHP-Code:
SELECT * FROM user WHERE alter>'18', geschlecht='m' ORDER BY lastlogin
alle PLZ mit Angabe der Entfernung, welche sich innerhalb einer bestimmten Distanz zur Ausgangs-PLZ befinden:
PHP-Code:
SELECT ort, plz,(6367.41*SQRT(2*(1-cos(RADIANS(breite))*cos(".$breite.")*
(sin(RADIANS(laenge))*sin(".$laenge.")+cos(RADIANS(laenge))*
cos(".$laenge."))-sin(RADIANS(breite))*sin(".$breite.")))) AS
Distance FROM geodb_locationsWHERE 6367.41*SQRT(2*
(1-cos(RADIANS(breite))*cos(".$breite.")*(sin(RADIANS(laenge))*
sin(".$laenge.")+cos(RADIANS(laenge))*cos(".$laenge."))-
sin(RADIANS(breite))*sin(".$breite."))) <=".$umkreis."
ORDER BY Distance
Hat einer von Euch Cracks hier vielleicht ne Idee oder gar ne Lösung auf Lager?
Viele Grüße,
Friedward
Kommentar