У меня есть таблица MySQL, содержащая около 1000 строк, заполненных различными типами фруктовых деревьев и их расположением на ферме. Данные выглядят так:
Расположение фруктовых деревьев на ферме
7 |
6 | G G
5 | G
Y 4 | G G
3 | A X G G
2 | A A A
1 |_ _ _ _ _ _ _
1 2 3 4 5 6 7
X
Фруктовые деревья MySQL Table
ID Type X Y
-- ---- -- --
1 Apple 3 2
2 Grape 3 4
3 Grape 3 5
4 Grape 3 6
5 Apple 4 2
6 Apple 4 3
7 Grape 4 6
8 Apple 5 2
9 Grape 5 4
10 Grape 6 3
11 Grape 7 3
Теперь я собираюсь запросить эту таблицу, чтобы получить ближайшие "3" дерева каждого типа из центра X (5,3).
Результат запроса должен возвращать что-то вроде:
ID Type X Y
-- ---- -- --
6 Apple 4 3
5 Apple 4 2
8 Apple 5 2
9 Grape 5 4
10 Grape 6 3
11 Grape 7 3
Может быть несколько деревьев с одинаковым расстоянием от центра, но это не должно иметь значения, потому что как только будет найдено максимальное количество ближайших деревьев (3), мы не будем больше включать деревья из этого типа деревьев. Надеюсь, что это имеет смысл.
Чтобы получить расстояние от центра X до ближайшего дерева, я использую следующую формулу:
Distance = SQRT( POW(ABS(5 - X),2) + POW(ABS(3 - Y),2) )
Вот ссылка, которую я пытался использовать:
Сумма до определенной точки - MySql
Как бы я написал MySQL-запрос, чтобы получить результаты?
Возможно, мне придется написать несколько запросов для этого, но я просто не уверен, как все это структурировать.
Спасибо