У меня есть таблица с несколькими записями, каждая из которых содержит поле под названием «координаты». Это поле было обновлено с указанием географической точки.
UPDATE testing SET [coords] = geography::Point(52.029736, -113.973541, 4326)
WHERE id=2"
Что мне нужно сделать, это ... когда пользователь вошел в систему, у него есть запись, которая принадлежит ему, в этом примере говорится, что его идентификатор записи # 1. Им необходимо посетить страницу, на которой показаны все остальные записи, чье поле «coords» находится на определенном расстоянии.
Это лучшее, что я придумал;
Во-первых, я могу найти старт, согласованный с этим утверждением;
SELECT coords FROM testing WHERE id=1
Это дает мне исходную координату как coords.Lat и coords.Long
Тогда я хотел бы найти поблизости, так что у меня есть это;
SELECT * FROM testing WHERE coords.STDistance() <=(20 * 1609.344)
Я не знаю, как поместить исходные координаты во второй оператор, чтобы он заработал.
Нужна ли мне хранимая процедура, или я могу как-то поместить координаты coords.Lat/coords.Long в скобки STDistance? Или я совершенно не понимаю, как я ожидаю, что это сработает.
К вашему сведению, у меня очень мало опыта работы с sql server, я никогда не делал ничего "продвинутого", только простые select * from table where record = 1
и базовые вставки и обновления.