В PostgreSQL 12.1 64-битной и PostGIS 3.0 у меня есть две маленькие таблицы точек. Я хочу определить расстояние от одной точки в одной таблице до нескольких точек в другой таблице. Обе таблицы имеют один и тот же SRID: 26910.
WKT для таблицы с несколькими точками, ebd_sampl
, имеет следующие координаты:
ID geom
'S6485705' 'POINT(473697.203011859 5107286.1114417)'
'S16187642' 'POINT(473388.313557094 5107381.77541894)'
'S21737009' 'POINT(473304.975396136 5107449.75936742)'
'S27967642' 'POINT(472992.535028299 5107506.05876625)'
'S30893534' 'POINT(472638.34972214 5107604.73782347)'
'S35264483 'POINT(473106.919925334 5107464.0012127)'
Точка WKT из другой таблицы, grid_sampl
, это: 'POINT(473144.563851624 5107073.33440939)'
Я могу написать внутренний запрос с предложением WHERE, чтобы выбрать одну точку в первом внутреннем запросе и получить одно расстояние между одной точкой в каждой таблице. Я подумал, убрав предложение WHERE в первом внутреннем запросе, этот запрос будет более общим и вернет таблицу с расстояниями для всех точек в первой таблице до выбранной точки во второй таблице. Но я не знаю, как написать SQL для этого.
Я пытался:
SELECT ST_Distance(
(SELECT geom FROM p_loc.ebd_sampl),
(SELECT geom FROM p_loc.grid_sampl WHERE data = '441062')
);
И вот результат:
ERROR: more than one row returned by a subquery used as an expression
Я бы хотел таблицу как (значения расстояния здесь составлены):
ID distance
'S6485705' 400
'S16187642' 550
'S21737009' 633
'S27967642' 401
'S30893534' 700
'S35264483' 501
Что SQL следует использовать, чтобы возвращались соответствующие расстояния для каждой точки в первой таблице до одной выбранной точки во второй таблице?