You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.1 KiB
30 lines
1.1 KiB
SELECT *
|
|
FROM (
|
|
SELECT DISTINCT restaurant_id,
|
|
restaurant_name,
|
|
restaurant_category,
|
|
restaurant_longitude,
|
|
restaurant_latitude,
|
|
restaurant_opening,
|
|
restaurant_closing,
|
|
user_id, p.radius,
|
|
p.distance_unit
|
|
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
|
|
* COS(RADIANS(z.restaurant_latitude))
|
|
* COS(RADIANS(p.longpoint - z.restaurant_longitude))
|
|
+ SIN(RADIANS(p.latpoint))
|
|
* SIN(RADIANS(z.restaurant_latitude)))) AS distance
|
|
FROM users_view AS z
|
|
JOIN ( /* these are the query parameters */
|
|
SELECT 22.953012 AS latpoint, 40.635502 AS longpoint, 0.7 AS radius, 111.045 AS distance_unit
|
|
) AS p ON 1=1
|
|
WHERE z.restaurant_latitude
|
|
BETWEEN p.latpoint - (p.radius / p.distance_unit)
|
|
AND p.latpoint + (p.radius / p.distance_unit)
|
|
AND z.restaurant_longitude
|
|
BETWEEN p.longpoint - (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
|
|
AND p.longpoint + (p.radius / (p.distance_unit * COS(RADIANS(p.latpoint))))
|
|
) AS d
|
|
WHERE distance <= radius
|
|
ORDER BY distance
|
|
LIMIT 15
|
|
|