2012-12-31 96 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