Я построил мобильное приложение, которое должно найти события, происходящие вокруг них, исходя из их текущей широты и долготы с радиусом 10 миль. Пользователь нажимает на тип события, и API должен искать все события в радиусе 10 миль от них. Как моя база данных настроена, каждое событие принадлежит месту, где хранится широта и долгота. Вот SQL, что я до сих пор:Найти местоположение событий Рядом с пользователем
$sql = "SELECT events.*, (3959 * acos(cos(radians(78.3232)) * cos(radians($latitude)) * cos(radians($longitude) - radians(65.3234)) + sin(radians(78.3232)) * sin(radians($latitude)))) AS distance
FROM events
INNER JOIN venues ON events.venue_id = venues.id
INNER JOIN promoters ON events.promoter_id = promoters.id
WHERE type = $type AND end > NOW()
ORDER BY distance";
событиях, таблица хранит информацию о событии (название, описание, начало, конец и т.д.), тогда как места таблица хранит информацию о месте (имя, адрес , широта, долгота и т. д.). Как я могу присоединиться к этим таблицам, чтобы убедиться, что я извлекаю события, которые я хочу, на основе местоположения пользователя?
Спасибо за быстрый ответ. Я вижу, что мне не хватало этого предложения HAVING. Я думаю, что моя трудность приходит, потому что координаты для каждого события хранятся в таблице мест. Мне нужно захватить информацию о событиях для всех мест, находящихся на этом расстоянии. Я продолжу играть с ним. Было бы лучше, если бы я разместил свои схемы БД? – WebDev84
Схемы упрощали бы и, как ни печально, приводили бы нужные вам столбцы, которые вам действительно нужны. Я собираюсь отредактировать свой пост с другой мыслью об этом. – quid
На самом деле я только что внесли изменения и увидел, как вы обращались к пользовательскому входу lat/lng и DB lat/lng, и ваше редактирование должно работать. Я собираюсь сделать некоторые тесты на этом, но он должен работать отлично. Спасибо огромное! – WebDev84