1

米国にいて、特定の Facebook ページが気に入らないすべての友人を選択する FQL クエリを作成しようとしています。理想的には、ページ X またはページ Y が好きな人を除外して、ユーザーの友人の選択を返したいと思います。

Facebook FQL は非常に強力ですが、一部の機能が制限されています。たとえば、「NOT IN」演算子はサポートされていません [ソース1および2 ]。いくつかの調査を行った後、この動作を模倣するための回避策があるようです。私が投稿したソースには例がありますが、要するに、ユーザーはマルチクエリを送信して、別のグループ (クエリ 2) に属していないグループ (クエリ 1) を選択し、結果を返すことができます。

これまでのところ、これは私の FQL クエリですが、希望どおりに動作していません。ヘルプや提案はありますか?

SELECT uid, name, pic_square, current_location FROM user
        WHERE current_location.country = 'United States' AND
        uid IN (
            SELECT uid2 FROM friend WHERE uid1 = me()
        ) AND NOT (
            uid IN (
                SELECT uid FROM page_fan WHERE uid IN (
                    SELECT uid2 FROM friend WHERE uid1 = me()
                ) AND (page_id=40796308305 OR page_id=56381779049)
            )
        )

これは次のようになります: 米国に住んでいて、コカ・コーラが好きではない、またはペプシが好きではないすべての友人を選択してください。

私が見た他の解決策は、友人をループし、好きなものをつかみ、そのリストをループして独自のデータ構造を構築することです。私はそれを行うことができますが、それはかなり時間がかかるリクエストの量です。特に、ユーザーに 2 ~ 4,000 人の友達がいる場合はそうです。

助けてくれてありがとう。とても感謝しています。

4

1 に答える 1

1

クエリは正しいようです。許可を逃したと思います:friends_likesユーザーの友達のいいねを取得するために必要です。その場合は、最後のクエリです。

SELECT uid FROM page_fan WHERE uid IN (
                SELECT uid2 FROM friend WHERE uid1 = me()
            ) AND (page_id=40796308305 OR page_id=56381779049)

あなたに少ない番号を与えるでしょう。結果の。

于 2013-08-26T18:59:22.887 に答える