Привет, ребята. Я пытаюсь сравнить расстояние между клиентом и соответствующим сервером, используя данные географии в MSSQL.
Я могу успешно сравнить расстояние между двумя точками.Однако отображается расстояние только для последней записи.
Вот запрос, который я использую:
Declare @locations1 GEOGRAPHY;
Declare @locations2 GEOGRAPHY;
Declare @ServerID int;
SELECT @locations1 = GeoLoc from [TestDb].[dbo].[Locations] where IsClient =1;
SELECT @ServerID = ServerID from [TestDb].dbo.Locations where IsClient=1;
SELECT @locations2 = GeoLoc from [TestDb].[dbo].[Locations] where IsClient =0 AND id=@ServerID ;
select @locations1.STDistance(@locations2)/1000 As [Distance in KM]
Я считаю, что приведенный выше запрос работает следующим образом:
location1 - имеет географическое расположение тех столбцов, где IsClient равен True.
ServerId - имеет ServerID столбцов, в которых IsClient равен True.
location2 - имеет географическое расположение столбца, где IsClient равен 0, а идентификатор сервера, полученный в приведенном выше запросе, совпадает с идентификатором компьютера.
Таким образом,
местоположения1 должны иметь географическое расположение клиентов.
местоположения2 должны иметь географическое расположение соответствующих серверов.
Мой дизайн таблицы:
![enter image description here](https://i.stack.imgur.com/XwxGE.png)
Когда я сравниваю, я получаю правильный результат, но только расстояние междупоследняя запись клиента и сервера в таблице.Расстояние любой другой записи не отображается.
Как получить расстояние всех записей?Нужна помощь:).Спасибо.