我在我的数据库中有一个名为“points”和“category”的表格。用户将输入信息到位置输入和关键字输入文本框中。如何结合距离和关键字SQL查询?
然后我想在我的表格中找到关键字与点表中的“标题”字段相匹配的点或“类别”但位于距用户位置一定距离内的点。我想按距离排序结果。
这里有2个查询其独立BTOH工作:
$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);
但它告诉我没有已知列 “距离”。如果我删除了“顺序依据”一词,那么它可以工作,但我仍然不确定这是否给了我想要的结果。我也试着用距离搜索的其他方式尝试查询,但似乎忽略了我的关键字。
任何想法将不胜感激!