2015-10-19 4 views
0

У меня есть одна таблица, которая имеет много места, отображенного с помощью гео многоугольникиграф все точки в гео многоугольник (SQL Server 2014)

А потом у меня есть еще один стол со свойствами, имеет место, что является «география "свойство

Если я использую этот код я получаю число свойств в определенном месте:

SELECT COUNT(id) FROM Property 
WHERE [Status] = 1 
AND Location.Filter(Geography::Parse('POLYGON ((8.476 40.2591,8.4618 40.241,8.4787 40.2403,8.4851 40.2539,8.476 40.2591))')) = 1 

Но проблема в том, что я, что знаю, как много свойств, которые расположены в любом месте (многоугольники используется в моем запросе из таблицы местоположений)

Единственная связь между таблицами являются точки размещения

Я действительно нуждается в помощи здесь

EDIT:

Благодаря Бену я, наконец, получил его на работу, вот код, который работает для меня :)

SELECT location.Id, (SELECT COUNT(property.Id) FROM Property AS property WHERE property.Location.Filter(Geography::Parse('POLYGON ((' + location.GeoPolygon + '))')) = 1) AS PropertyCount 
FROM Location AS location 
+0

Это звучит как хороший вариант использования для [STContains] (https://msdn.microsoft.com/en- us/library/bb933904% 28v = sql.120% 29.aspx) – C8H10N4O2

+0

Спасибо друг другу. Не могли бы вы объяснить, как реализовать STContains в моей проблеме? Я никогда не использовал эту функцию, и я не понимаю, как я должен подключать две таблицы. –

ответ

1

Что-то, как это должно работать:

SELECT l.LocationID, count(*) 
FROM dbo.Location as l 
JOIN dbo.Property as p 
    on l.geoColumn.STContains(p.Location) = 1 

Я предполагаю, что структура на вашем Location столе что-то вроде:

create table dbo.Location (
    LocationID int, 
    geoColumn geography, 
    … 
) 
+0

Привет, Бен, спасибо за ваш ответ, но, к сожалению, моя геоколонка - это varchar (MAX), поэтому, когда я запускаю код, я получаю эту ошибку : « Невозможно вызвать методы на varchar (max)». –

+0

Исправить. Поскольку в столбце varchar буквально есть что угодно, не имеет смысла рассматривать его как тип географии. Но если вы действительно храните WKT, вы можете добавить столбец с сохраненным компьютером, который является типом географии, и тогда это сработает. Если нет ... то, что * вы храните там? –

+0

Привет, Бен, в геоколонке Я ​​храню геополигоны в виде простого текста, вот пример: 1.4749 42.6622,1.4241 42.6067,1.3987 42.5404,1.4363 42.533,1.4574 42.5093,1.3953 42.4944,1.4186 42.4832,1.4365 42.4356,1.5491 42.4235,1.5862 42.4559 , 1,6507 42,464,1,6768 42,4822,1,7249 42,5005,1,788 42,5774,1,7413 42,6218,1,5601 42,6622,1,4749 42,6622 –

Смежные вопросы