Angenommen ich möchte alle Inserate anzeigen lassen, die im Umkreis sind.
2 Tabellen:
- inserate (mit Verknüpfung zum Ort per geo_id)
- coordinates
Mein Ansatz:
IN ist da der falsche Ansatz, wie gehe ich da ran, es muss ja nicht nur eine id verglichen werden, sondern z.B. alle Inserate angezeigt werden von 10 Orten, also 10 id's
2 Tabellen:
- inserate (mit Verknüpfung zum Ort per geo_id)
- coordinates
Mein Ansatz:
Code:
SELECT test.id, test.name, test.geo_id
FROM inserat test
JOIN coordinates test2
ON test.geo_id = test2.id
WHERE test2.id IN(
SELECT
dest.zip,
dest.location_name,
ACOS(
SIN(RADIANS(src.lat)) * SIN(RADIANS(dest.lat))
+ COS(RADIANS(src.lat)) * COS(RADIANS(dest.lat))
* COS(RADIANS(src.lon) - RADIANS(dest.lon))
) * 6380 AS distance
FROM coordinates dest
CROSS JOIN coordinates src
WHERE src.id = 9024
HAVING distance < 10
ORDER BY distance
);
IN ist da der falsche Ansatz, wie gehe ich da ran, es muss ja nicht nur eine id verglichen werden, sondern z.B. alle Inserate angezeigt werden von 10 Orten, also 10 id's
Zuletzt bearbeitet von einem Moderator: