如何制作Facebook FQL查询以选择所有不喜欢页面的朋友?

时间:2013-08-26 18:25:14

标签: php facebook facebook-graph-api facebook-fql facebook-php-sdk

我正在尝试创建一个FQL查询,选择我在美国并且不喜欢某些Facebook页面的所有朋友。理想情况下,我想向用户朋友返回一个选项,并将其排除给喜欢Page X或Page Y的人。

Facebook FQL非常强大,但它在某些功能上也受到限制。例如,不支持“NOT IN”运算符[来源12]。在做了一些研究后,似乎有一种模仿这种行为的工作。我发布的来源有示例,但简而言之,用户可以提交multi-query来选择不在另一组人(查询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-4k的朋友。

感谢帮助人员。非常感谢。

1 个答案:

答案 0 :(得分: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)

会给你少一些。结果。