2016-09-26 53 views
0

使用MySQL 5.7地理空間擴展我有一個表字段「聚」定義梁的側向邊界需要一個優雅的方式來找到數百一場比賽沒有做幾百個查詢

我有一個字段的「點「,它定義了一個單一的位置。

爲了確定一個給定的點是在給定的波束我運行查詢:

set @p=(select pt from beams where name='current_position'); 
SET @a = (select poly from beams where name='first_beam'); 
SELECT MBRWithin(@p,@a); 

這將返回「1」,如果該點是在多邊形內部和「0」,如果不

但我有大約1000個光束,我想要找到current_position所在的光束,是否必須運行一千個查詢,或者是否有一種方法來優雅地返回它所在的光束?梁不重疊,最多隻有1個匹配。

+0

我會用一些這樣開始了'set @ P =(選擇梁PT其中name = 'CURRENT_POSITION'); MBRWithin(@p,poly);' – Ma3x

+0

http://stackoverflow.com/help/someone-answers – e4c5

回答

0

MBRWithin可以被用在JOIN

SELECT p.id, a.id FROM 
    (select pt from beams where name='current_position') as p 
INNER JOIN 
    (select poly from beams where name='first_beam') as a 
ON MBRWithin(p.pt, a.poly) 
+0

非常感謝你我沒有意識到MBRWithin可以這樣使用!這將非常有用。這裏是我最後得到的結果:SELECT pt,poly FROM (從beam中選擇名稱='current_position')p INNER JOIN (從光束中選擇多邊形)作爲 ON MBRWithin(pt,poly); – Hankrausch

相關問題