Как получить данные из таблицы MySQL на основе таблицы соединений

#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

Спасибо, и я надеюсь, что хорошо все объяснил.