2012-12-31 80 views
2

我想在2012年获得我朋友最喜欢的照片。我已经做了以下查询。使用fql获取Facebook上朋友最喜欢的照片

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张照片,降序排列。但是当我检查照片时,我可以理解这个清单是不正确的。一些最喜欢的朋友的照片不在列表中。我多次检查查询。我无法理解这个查询有什么问题。任何人都可以帮助我找出为什么这个查询没有给出想要的结果吗? 任何建议都是最受欢迎的。

回答

3

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

  1. 首先SELECT UID2从相知WHERE UID1 =我()运行查询和输出的100个朋友

  2. 其次SELECT援助从相册WHERE所有者(..100朋友...)查询运行并输出您的100个朋友的s100相册。

  3. 最后选择PID,字幕,援助,老板,链接,src_big,src_small,创建,修改,like_info 从照片WHERE创建> 1325356200和援助(100 ... ...援助)ORDER BY like_info .like_count DESC LIMIT 30查询运行并输出100个相册的结果。

显然结果根本不是你想要的。你可能会尝试自己增加你的限制(比如限制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()随机化专辑。您可以尝试随机化这两个查询。每次你执行这些代码,它会给出非常不同的结果,你会发现有更多的图片有更多的喜欢。

+0

感谢Felix的解释。帮助我理解了这个问题。 – Unni