2012-07-19 65 views
0

我想在FQL查詢中創建一個OR子句。Facebook的FQL查詢OR

這裏是我的查詢:

SELECT post_id, message, permalink, likes, actor_id, created_time FROM stream WHERE 
(source_id = xxx1 AND message != '' AND actor_id = xxx2) 
OR 
(source_id = xxx2 AND actor_id = xxx1) 

全球我想檢索所有2個Facebook用戶之間的消息。 如果我刪除我做的一種方式接收郵件的OR子句,但加入或刪除每一個消息我彷彿「(」如果你需要測試此查詢,請繼續不工作

http://developers.facebook.com/tools/explorer 並使用read_stream許可創建和訪問令牌(擴展權限)

我也想使用UNION,但不支持FQL。 也許我可以使用FQL多個查詢,但我仍然被UNION丟失。

謝謝你的幫助。

回答

2

您可以使用子查詢來實現這樣理想的結果:

SELECT post_id, message FROM stream 
WHERE 
    (
     post_id in (select post_id from stream where actor_id = uid0 and source_id = uid1) 
    or 
     post_id in (select post_id from stream where actor_id = uid1 and source_id = uid0) 
    ) 
    and message != '' 
+0

謝謝您的幫助:) – linvi 2012-07-19 23:30:31

0

由complex857提供的答案是正確的,但我想補充一些資料。 要使此查詢有效,您必須在查詢中添加LIMIT/OFFSET子句。

SELECT post_id FROM stream 
    WHERE 
     (post_id IN (SELECT post_id FROM stream WHERE source_id = uid0 AND actor_id = uid1 LIMIT 1000 OFFSET 0) 
      OR 
     post_id IN (SELECT post_id FROM stream WHERE source_id = uid1 AND actor_id = uid0 LIMIT 1000 OFFSET 0)) 
    AND message != ''; 

希望這將有助於:)