2012-01-31 50 views
0

誰能告訴我,爲什麼這個工程:FQL像運營商

SELECT name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) AND strpos(lower(name),"jo") >=0 

然而,這並不:

"SELECT url, id, type, site FROM object_url WHERE strpos(lower(url), 'sephora') >= 0" 

當我把它放在http://developers.facebook.com/docs/reference/rest/fql.query/

我得到這樣的迴應:

你的陳述是不可轉位的。 WHERE子句必須包含一個可索引列。這些列在鏈接自http://developers.facebook.com/docs/reference/fql

的表格中用*標記,但是「url」確實是可索引的。

有什麼想法?我已經淘到了stackoverflow但沒有找到答案。

回答

1

網站不可索引,只能選擇。它在這裏沒有*旁邊的https://developers.facebook.com/docs/reference/fql/object_url/

你需要使用url或id作爲可索引列,所以基本上這些需要在你的where子句中。

+0

錯字...實際上它應該從一開始就是URL。編輯了這個問題。結果仍然是一樣的。 – Rees 2012-01-31 22:36:54

+0

然後我的猜測是因爲,頂部的例子是沒有使用索引上的函數。所以WHERE使用IN(SELECT uid2 FROM friend WHERE uid1 = me())充當索引,然後使用where子句的其餘部分。所以運行SELECT url,id,type,site FROM object_url WHERE url ='sephora'和strpos(lower(url),'sephora')> = 0將是一個有效的查詢(儘管顯然不會返回任何結果,因爲url = 'sephora'不是一個完整的url),所以它看起來像你需要改變你的查詢恐怕 – TommyBs 2012-02-01 08:28:43

0

FQL!= SQL你不能在任何你想要的列上找到WHERE。考慮到許多並行作家需要的性能並不令人驚訝,我的意思是,世界上每十個人中就有一個人報名參加。

第二個示例中的問題是,用作其中一個字符串函數的參數的字段失去了其可索引性。它必須是專欄本身。