У меня есть две таблицы (a, b), обе с полем формы или геометрии. Я хочу, чтобы триггер запускался после вставки в таблицу a, чтобы найти (единственную) ближайшую пространственную запись из таблицы b. Я изучил функцию STDistance с небольшой удачей. Таблица а уникальна.
ПОСЛЕ ВСТАВКИ
Таблица а
OBJECTID,RoadID
12345,NULL
Таблица б
AssetID
RD12345
RD12233
RD12333
RD12222
STDistnace сказал бы, что таблица a.OBJECTID 12345 ближайшая таблица b.AssetID = RD12222
Результат
Таблица а
OBJECTID,RoadID
12345,RD12222
Я завершил предварительное тестирование, которое возвращает все совпадающие записи (из обеих таблиц), но я пытаюсь сжать его до только совпадающей записи с наименьшим расстоянием, следовательно, агрегатной функции (MIN) на STDistance.
SELECT TableA.AssetID,MIN(TableA.Shape.STDistance(TableB.Shape)) AS DIST, TableB.AssetID AS RoadID
FROM TableA, TableB
GROUP BY TableA.AssetID, TableB.AssetID
HAVING MIN(TableA.Shape.STDistance(TableB.Shape)) < 250
ORDER BY AssetID
В результате я получаю отношение многие ко многим по расстоянию для всех записей. Если я применю агрегатную функцию (MIN), я могу значительно уменьшить ее, однако таблица с уникальным идентификатором все еще дублируется. План состоит в том, что после того, как оператор select сработает, я переведу его в свой триггер - я бы предпочел, чтобы ответ основывался на том, как он будет реализован в триггере.
JOIN
в ANSI-92 b> Стандарт SQL (более 25 лет назад), и его использование не рекомендуется - person marc_s   schedule 29.07.2019