子查询计算错误?
Subquery calculation error?
为什么这个查询不起作用?
$query = ("SELECT * FROM
(SELECT *, (
(((endingLatitude - " . $h . ")(endingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((endingLongitude - " . $k . ")(endingLongitude - " . $k . "))
/" . pow($r2, 2) . "
) AS point2
FROM (SELECT *, ((
(
((startingLatitude - " . $h . ")(startingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((startingLongitude - " . $k . ")(startingLongitude - " . $k . "))
/" . pow($r2, 2) . "))
AS point1
FROM (SELECT * FROM trips WHERE distance >='" . ($distance * .25) . "') as query1)
as query2) as query3 WHERE point1 <= 1 AND point2 <= 1 LIMIT 0 , 10;");
$result = mysqli_query($con, $query);
$h和$k分别是椭圆x和y坐标。我正在使用找到的公式 here 来计算两个点 (startingLat,startingLong) 和 (endingLat,endingLong) 是否在垂直高度为 $r1 和水平高度为 $r2 的椭圆内。我还将搜索的行限制为距离单元格值大于 $distance * .25.
的行
我认为这可能与括号错误有关,或者与我 querying/performing 我的计算方式有关。
正在使用
die(mysqli_error($con));
returns You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(endingLatitude - 36.9564753)) /796.842964388) + ((endingLongitud' at line 3
的错误
我相信你必须使用 Mysql 乘法算术运算符,*。
https://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_times
而不是:
(endingLatitude - " . $h . ")(endingLatitude - " . $h . ")
这样做...
(endingLatitude - " . $h . ") * (endingLatitude - " . $h . ")
为什么这个查询不起作用?
$query = ("SELECT * FROM
(SELECT *, (
(((endingLatitude - " . $h . ")(endingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((endingLongitude - " . $k . ")(endingLongitude - " . $k . "))
/" . pow($r2, 2) . "
) AS point2
FROM (SELECT *, ((
(
((startingLatitude - " . $h . ")(startingLatitude - " . $h . "))
/" . pow($r1, 2) . ")
+
((startingLongitude - " . $k . ")(startingLongitude - " . $k . "))
/" . pow($r2, 2) . "))
AS point1
FROM (SELECT * FROM trips WHERE distance >='" . ($distance * .25) . "') as query1)
as query2) as query3 WHERE point1 <= 1 AND point2 <= 1 LIMIT 0 , 10;");
$result = mysqli_query($con, $query);
$h和$k分别是椭圆x和y坐标。我正在使用找到的公式 here 来计算两个点 (startingLat,startingLong) 和 (endingLat,endingLong) 是否在垂直高度为 $r1 和水平高度为 $r2 的椭圆内。我还将搜索的行限制为距离单元格值大于 $distance * .25.
的行我认为这可能与括号错误有关,或者与我 querying/performing 我的计算方式有关。
正在使用
die(mysqli_error($con));
returns You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(endingLatitude - 36.9564753)) /796.842964388) + ((endingLongitud' at line 3
我相信你必须使用 Mysql 乘法算术运算符,*。 https://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_times
而不是:
(endingLatitude - " . $h . ")(endingLatitude - " . $h . ")
这样做...
(endingLatitude - " . $h . ") * (endingLatitude - " . $h . ")