У меня есть таблицы в моей базе данных, которые называются «точки» и «категория». Пользователь будет вводить информацию как в поле ввода местоположения, так и в поле ввода ключевого слова.
Затем я хочу найти точки в моей таблице, где ключевое слово соответствует либо полю "заголовок" в таблице точек, либо категории, но находится на определенном расстоянии от местоположения пользователя. Я хочу упорядочить результаты по расстоянию.
Вот два запроса, которые работают независимо:
$mysql = "SELECT *, ( 3959 * acos( cos( radians('$search_lat') ) * cos( radians( lat ) ) * cos( radians( longi ) - radians('$search_lng') ) + sin( radians('$search_lat') ) * sin( radians( lat ) ) ) ) AS distance FROM points HAVING distance < '$radius'";
$mysql2 = "SELECT * FROM `points` LEFT JOIN category USING ( category_id ) WHERE (point_title LIKE '%$esc_catsearch%' OR category.title LIKE '%$esc_catsearch%')";
Вот что я попробовал:
$sql_search = sprintf("SELECT *,point_id FROM points WHERE point_title LIKE '%%%s%%' UNION SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( lat ) ) * cos( radians( longi ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( lat ) ) ) ) AS distance FROM points HAVING distance < '%s' ORDER BY distance LIMIT %d , %d",
$esc_catsearch,
mysql_real_escape_string($search_lat),
mysql_real_escape_string($search_lng),
mysql_real_escape_string($search_lat),
mysql_real_escape_string($radius),
$offset,
$rowsPerPage);
Но это говорит мне, что нет известной колонки "расстояние". Если я уберу фразу «Заказать по», это сработает, но я все еще не уверен, что это дает мне желаемые результаты. Я также попытался выполнить запрос в обратном порядке сначала с помощью поиска по расстоянию, но это, похоже, игнорирует мое ключевое слово.
Любые мысли приветствуются!