使用fql从facebook获取最喜欢的朋友的照片

时间:2012-12-31 04:27:48

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

我想在2012年获得最喜欢的朋友照片。我做了以下查询。

SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info 
FROM photo WHERE created > 1325356200 and aid 
IN (SELECT aid FROM album WHERE owner
IN (SELECT uid2 FROM friend WHERE uid1=me()))
ORDER BY like_info.like_count DESC LIMIT 30

它按照降序给我最喜欢的30张照片。但是当我检查照片时,我可以理解列表不正确。我朋友的一些最喜欢的照片不在列表中。我多次检查过这个问题。我无法理解这个查询有什么问题。任何人都可以帮我找出为什么这个查询没有给出所需的结果? 任何建议都是最受欢迎的。

1 个答案:

答案 0 :(得分:3)

问题是由于每个FQL查询的默认LIMIT值(LIMIT 100)。

  1. 首先 SELECT uid2 FROM friend WHERE uid1 = me()查询运行并输出您的100位朋友

  2. 其次 SELECT辅助FROM专辑WHERE所有者IN(..100朋友......)查询运行并输出您100位朋友的s100专辑。

  3. 最后选择 pid,标题,辅助,所有者,链接,src_big,src_small,创建,修改,like_info FROM照片WHERE创建> 1325356200和援助IN(... 100 Aid ...)ORDER BY like_info.like_count DESC LIMIT 30 查询运行并输出100张专辑的结果。

  4. 显然结果根本不是你想要的。您可能会尝试自己增加限制(比如LIMIT 1000),但它从来没有对我有用。获得准确结果的唯一方法是尝试图形API,但执行需要很长时间,最终它是一个死的选择。

    我的回答证明

    尝试运行这些代码

    SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info 
    FROM photo WHERE created > 1325356200 and aid IN (SELECT aid FROM album WHERE owner IN
    (SELECT uid2 FROM friend WHERE uid1=me() order by rand() ))ORDER BY like_info DESC LIMIT 30
    

    我使用rand()函数随机化朋友

    SELECT pid, caption, aid, owner, link, src_big, src_small, created, modified, like_info FROM
    photo WHERE created > 1325356200 and aid IN (SELECT aid FROM album WHERE owner IN (SELECT 
    uid2 FROM friend WHERE uid1=me() ) order by rand() ) ORDER BY like_info DESC LIMIT 30 
    

    这里我使用rand()来随机化相册。您可以尝试随机化两个查询。每当你执行这些代码时,它会产生非常不同的结果,你会发现还有更多的照片有更多的喜欢。