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.
32 lines
1.1 KiB
32 lines
1.1 KiB
6 years ago
|
SELECT *
|
||
|
FROM (
|
||
|
SELECT restaurant_id,
|
||
|
restaurant_name,
|
||
|
restaurant_category,
|
||
|
restaurant_longitude,
|
||
|
restaurant_latitude,
|
||
|
restaurant_opening,
|
||
|
restaurant_closing,
|
||
|
restaurant_is_approved,
|
||
|
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 flavours_without_borders.restaurant 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
|