2014-01-12 32 views
1

我不確定爲什麼我的請求沒有正確拉取我正在尋找的數據。我是FQL的新成員,不確定如何將這種格式的WHERE IN合併到一起。我試圖避免使用Facebook對象。FQL中的多個查詢不能正確拉取數據

我的查詢的目的是讓那些在過去的100個帖子中喜歡的人得到facebook user_id

$fql_multiquery_url = 'https://graph.facebook.com/fql?q=' 
. '"post+ID":"SELECT+post_id+FROM+stream+WHERE+source_id=6979393237+LIMIT+100",' 
. '"like+ID":"SELECT+user_id+FROM+like+WHERE+post_id+IN+#postID"}' 
. '&access_token=' . $access_token; 

回答

1

您的FQL多查詢看起來很有意思,但它爲什麼不起作用?

  1. 請勿在查詢名稱中使用空格。
  2. #this不是一個變量(但是包含多行的完整結果集),所以您需要編寫一個附加查詢(使用SELECT)來獲取有趣的行(如post_id)。
  3. 您忘記了FQL查詢{中的大括號。

FQL查詢:

{ 
"posts":"SELECT post_id FROM stream WHERE source_id=6979393237 LIMIT 100", 
"likes":"SELECT user_id FROM like WHERE post_id IN (SELECT post_id FROM #posts)" 
} 

Test it.

PHP代碼:

$fql_multiquery_url = 'https://graph.facebook.com/fql?q={' 
. '"posts":"SELECT+post_id+FROM+stream+WHERE+source_id=6979393237+LIMIT+100",' 
. '"likes":"SELECT+user_id+FROM+like+WHERE+post_id+IN+(SELECT+post_id+FROM+#posts)"}' 
. '&access_token=' . $access_token; 
0

爲什麼不如下:

$fql_query_url = 'https://graph.facebook.com/fql?q=SELECT+user_id+FROM+like+WHERE+post_id+IN+(SELECT+post_id+FROM+stream+WHERE+source_id=6979393237)+LIMIT+100&access_token=' . $access_token; 

我不認爲需要兩個單獨的查詢,如果你可以使用查詢嵌套(一個參考看看這裏:https://developers.facebook.com/docs/technical-guides/fql/#query

+1

這確實取決於需求。多重查詢旨在保存初始後ID和用戶ID。 –

+0

是的,我知道,但在這個用例中,我認爲它絕對沒有意義。查詢執行應該花費更多時間,而且,您還必須解析來自Facebook的兩個結果(並且您並不需要第一個結果)。 – Tobi

+0

這是真的:-) –