0

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句を削除すると、メッセージは1つの方法で受信されますが、ORを追加すると、'('が機能しないかのようにすべてのメッセージが削除されます。

このクエリをテストする必要がある場合は、http://developers.facebook.com/tools/explorer にアクセスし、read_stream権限(拡張権限)を使用してトークンを作成してアクセスしてください。

UNIONも使いたかったのですが、FQLではサポートされていません。FQLの複数のクエリを使用できるかもしれませんが、UNIONが見つからないためにブロックされました。

ご協力ありがとうございました。

4

2 に答える 2

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 != ''
于 2012-07-19T19:34:00.580 に答える
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 != '';

これがお役に立てば幸いです:)

于 2012-07-20T19:11:01.813 に答える