Я не могу решить эту проблему:MySQL-combinie два запроса
У меня есть mysql DB со многими геокоординированными координатами.
Мне понравилось, какие точки находятся в пределах определенного количества миль от конкретных координат И Которые находятся в пределах определенной площади.
Очки в пределах определенной области:
(SELECT
*,
'area' as type,
(3959 * acos(cos(radians(".$Plat.")) * cos(radians(lat)) * cos(radians(lng) - radians(".$Plng.")) + sin(radians(".$lat.")) * sin(radians(lat)))) AS distance
FROM
".$db."
HAVING
distance < ".$radius."
точки в пределах определенной площади:
SELECT
*,
'square' as type,
-1 AS distance
FROM
".$db."
WHERE
((Alat <= ".$Alat." AND ".$Alat." <= Blat) OR (Alat >= ".$Alat." AND ".$Alat." >= Blat)) AND
((Alng <= ".$Alng." AND ".$Alng." <= Blng) OR (Alng >= ".$Alng." AND ".$Alng." >= Blng))
...
Я использую UNION, чтобы объединить оба запроса, но дело в том, «тип» и «расстояние» имеет разный значения. Таким образом, я дважды искал точку поиска. Мне нравилось иметь все, что только раз.
Но я понятия не имею, как с этим справиться.
Edit:
Для обзора я взял лишь некоторые из данных.
В результате я получаю что-то вроде этого:
+------+-----------+-----------+----------+-------------+
| id | Alat | Alng | distance | type |
+------+-----------+-----------+----------+-------------+
| 42 | 53.704678 | 10.202164 | 12345 | area
+------+-----------+-----------+------------------------+
| 72 | 23.704678 | 15.202164 | 12345 | area
+------+-----------+-----------+------------------------+
......
+------+-----------+-----------+------------------------+
| 42 | 53.704678 | 10.202164 | -1 | square
+------+-----------+-----------+------------------------+
| 81 | 43.778 | 15.201212 | -1 | square
+------+-----------+-----------+------------------------+
......
- идентификатор (72) существует только в области не на площади.
- id (81) существует только на площади, а не в этом районе.
- id (42) находится в этом районе и на площади. Так выглядит два раза. Но это нужно только один раз. Область должна стать приоритетной.
но это просто должно быть
+------+-----------+-----------+----------+-------------+
| id | Alat | Alng | distance | type |
+------+-----------+-----------+----------+-------------+
| 42 | 53.704678 | 10.202164 | 12345 | area
+------+-----------+-----------+------------------------+
| 72 | 23.704678 | 15.202164 | 12345 | area
+------+-----------+-----------+------------------------+
......
+------+-----------+-----------+------------------------+
| 81 | 43.778 | 15.201212 | -1 | square
+------+-----------+-----------+------------------------+
......
Пожалуйста, предоставьте данные образца и ожидаемый результат как в табличной форме. –