2014-01-06 88 views
-3

我區的表,所有的地區是x,y爲xy和名稱MySQL的尋找區域根據座標

我希望能夠搜索和基於一組座標找到(X, y)如果它在一個地區10米以內。

地圖這些區域上的範圍爲-6000,-6000到6000,在6000表

列有:名稱,關鍵,COX1,COX2,coy1,coy2。從我可以告訴的第一個座標是最低的數字。

它們始終是整數,所以不需要小數點來擔心例如-3918,-4017,-3069,-2970。

可能會有多個區域重疊,在這種情況下,我需要返回所有這些區域。

這將從網頁傳遞。

幾個例子

  • COX1,COX2,coy1,coy2

  • -3918,-4017,-3069,-2970

  • -3905,-3962,-2393 ,-2330

  • -683,-683,-1459,-1459

  • 4336,4243,-4412,-432

OK,這似乎是我想要的,但它是非常碰運氣。 如果我換X1和X2,或者Y1和Y2圍繞它會在某些組合工作,但並不總是

SELECT RegionNames.Name FROM RegionNames 
    WHERE (-3500 between RegionNames.cox2 and RegionNames.cox1) 
    AND (-3000 between RegionNames.coy1 and RegionNames.coy2) 
+4

你嘗試過什麼?爲了讓生活更輕鬆,總是嘗試包括4/5個樣本行,並且應該匹配給定的查詢,這不應該是 –

回答

0

例如比方說,你有區域是這樣的:

Name   fromX  fromY  toX  toY 
NorthEast  0   0  6000  6000 
NorthWest  -6000  0   -1  6000 

而且你的城市是這樣的:

Name  X  Y 
MyCity -2000 550 

嘗試:

Select city.name, region.name from city 
join region on ((city.X between region.fromX and region.toX) 
and (city.y between region.fromY and region.toY)) 
+0

之間我沒有想到的。儘管一組座標不是來自另一個表格。謝謝 – TheDuncan

+0

如果它適用於您的使用,請考慮接受答案;)。 PS:城市表只是一個例子,看看如何使用這個想法;)。 – dagfr