2014-02-06 23 views
1

我不知道爲什麼這個FQL查詢心不是工作Facebook的FQL距離拼版工作不

SELECT page_id, name,type, distance(latitude, longitude, "37.7873589", "-122.408227") FROM place WHERE type="PLACE" AND 5000 < distance(latitude, longitude, "37.7873589", "-122.408227") ORDER BY distance(latitude, longitude, "37.7873589", "-122.408227") ASC LIMIT 10 

但是這一個工程

SELECT page_id, name,type, distance(latitude, longitude, "37.7873589", "-122.408227") FROM place WHERE type="PLACE" AND 5000 > distance(latitude, longitude, "37.7873589", "-122.408227") ORDER BY distance(latitude, longitude, "37.7873589", "-122.408227") ASC LIMIT 10 

不同的是,在第二個即時通訊使用大於「>」 。但在第一個即時通訊使用少於「<」

我想分頁使用Facebook的地方距離。

+0

它返回的錯誤:'{「錯誤」:{「消息」 :「(#606)對於大於查詢的距離必須爲0。」,「type」:「OAuthException」,「code」:606}}' –

回答

0

您的非工作示例正在嘗試從指定座標獲取5KM 或更多,這幾乎是地球上的每個地方 - API根本不會將那麼多數據返回給您。

我相信Facebook的API支持最多50公里的位置

+0

這是不正確的,因爲這也不行'SELECT page_id,name,type ,距離(經度,緯度,「37.7873589」,「-122.408227」)距離地點WHERE type =「PLACE」AND 5000 <距離(緯度,經度,「37.7873589」,「-122.408227」)和10000>距離(緯度,經度,「37.7873589」,「-122.408227」)'這是獲取小於10000米和超過5000米的地方 –

+0

,搜索最大值爲50000米。 Facebook使用米不是公里 –

+0

爲什麼這不正確?您評論中的示例試圖找到位置距離位置至少5KM,距離位置最多10KM;該API將完全忽略第一部分,因爲您試圖搜索太多地方。 另外,50KM = 50000M。 如果您嘗試從某個位置查找X和Y米之間的位置,請向API詢問Y米內的位置並自行進行篩選 - FQL不像ANSI SQL那樣工作,底層數據不支持該類型你試圖構建的查詢 – Igy

1

我想出了一個解決方案搜索。我這樣做的原因是因爲我想按距離分頁。如果你得到你的最後結果的距離,那麼你可以使用NOT()排除5000metres內像這樣的東西,而不是分頁下一個結果:

SELECT page_id, name,type, distance(latitude, longitude, "37.7873589", "-122.408227") FROM place WHERE type="PLACE" AND distance(latitude, longitude, "37.7873589", "-122.408227") < 50000 AND NOT (page_id IN(SELECT page_id FROM place WHERE distance(latitude, longitude, "37.7873589", "-122.408227") < 5000)) ORDER BY distance(latitude, longitude, "37.7873589", "-122.408227") ASC