#mysql #json
Вопрос:
Я пытался решить эту проблему, но не смог сделать это должным образом, любая помощь действительно ценится.
Это запрос на расчет расстояния на основе широты, долготы и расстояния в километрах
SELECT *
FROM (
SELECT *,
(
((acos(sin((27.6677608 * pi() / 180)) * sin((activities.latitude * pi() / 180))
cos((27.6677608 * pi() / 180)) * cos((activities.latitude * pi() / 180)) *
cos(((68.8543843 - activities.longitude) * pi() / 180)))) * 180 / pi()) * 60 *
1.1515 * 1.609344
)
as distance
FROM `activities`
WHERE is_public = true
AND (
DATEDIFF(end_time, start_time) > 0
OR
TIME_TO_SEC(TIMEDIFF(TIME(end_time), TIME(start_time))) > 10
)
) markers
WHERE distance <= 22
Это таблица ER диаграмма, связанная с деятельностью
Теперь я пытаюсь сделать то , что предоставляет пользователь latitude
, longitude
и distance
исходя из этого я рассчитываю activities
в пределах distance
, lat/longs
предоставленных пользователем.
ПРОБЛЕМА => проблема в том, что я хочу получить> activities
, которые не только близки к пользовательским lat/long
, distance
но и соответствуют определенным interest_id
из activity_interests
таблицы.
СЦЕНАРИЙ => например, я предоставляю эти данные в качестве полезной нагрузки
{
"latitude": "27.6677608",
"longitude": "68.8543843",
"distance": 7,
"interests": [1,2,3]
}
Теперь я хочу Activities
, Interest ids
чтобы в таблице присутствовала вся вышеуказанная полезная Activity_interests
нагрузка, и все еще выполнял расчет расстояния, для которого я предоставил приведенный выше SQL-запрос.
Используется MySQL версии 8.0
Спасибо, и я надеюсь, что хорошо все объяснил.