2012-05-22 44 views
4

我已經嘗試使用FQL和Graph API完成此操作。如何使用FQL或Graph API檢索僅包含一個標記用戶的照片或照片?

我開始嘗試這種FQL電話:

$fql = "SELECT pic, src_big FROM photo WHERE pid IN (SELECT pid FROM photo_tag WHERE subject = me())"; 

由此我得到的結果同時包含給定用戶的標籤圖像(在這種情況下:我())。但是,這些圖像可能包含多個標記的用戶。我希望通過使用SQL HAVING子句和COUNT(http://stackoverflow.com/a/3710501/1406986)來解決此問題。不幸的是我不認爲FQL支持這個功能,因爲當我嘗試這個呼叫時:

$fql = "SELECT pic, src_big FROM photo WHERE pid IN (SELECT pid FROM photo_tag HAVING COUNT(subject) = 1"; 

我從Facebook收到一個錯誤。如果FQL實際上支持此功能,請糾正我。

在嘗試這種使用Graph API我提出了以下要求,以解決:

$userPics = $facebook->api('/me/photos'); 

這將返回用戶的照片,不過,從這一點上,我不得不每一張照片迭代尋找那些只包含一個標籤。我發現這是不切實際的,例如,如果我需要爲每個只包含他們的朋友而沒有其他人的用戶朋友找到一張圖片。要做到這一點,我需要單獨檢索他們朋友的所有照片,然後遍歷所有這些照片。

我仍在尋找一個好的解決方案。請發佈您的想法和解決方案。

回答

2

嗯,我已經成功地創建了這個問題的FQL,但它不漂亮都

SELECT object_id, pid, src_big FROM photo WHERE pid IN 
    (SELECT pid FROM photo_tag 
    WHERE pid IN (SELECT pid FROM photo_tag WHERE subject = me()) 
    AND NOT (pid IN 
     (SELECT pid FROM photo_tag WHERE pid IN 
     (SELECT pid FROM photo_tag WHERE subject = me()) 
     AND subject != me()) 
    ) 
) 

說明:

第一個是非常簡單,獲取當前的photo_tags用戶

SELECT pid FROM photo_tag WHERE subject = me() 

下一個我加入了同一張桌子,但這次我想要的照片是我和某人在一起的地方

SELECT pid FROM photo_tag WHERE pid IN 
    (SELECT pid FROM photo_tag WHERE subject = me()) 
AND subject != me() 

的我又加入了同一個表(是3相同的表連接),但是這一次,我想我在那裏的主題那不是我之前得到了名單上的photo_tags(中我在那裏和別人的主題照片),因此該查詢返回所有用戶所在的只有一個標籤在照片中的photo_tags

SELECT pid FROM photo_tag 
WHERE pid IN (SELECT pid FROM photo_tag WHERE subject = me()) 
    AND NOT (pid IN 
    (SELECT pid FROM photo_tag WHERE pid IN 
     (SELECT pid FROM photo_tag WHERE subject = me()) 
     AND subject != me()) 
    ) 

最後除了查詢只是一個連接來從信息照片的照片表是我唯一被標記的

SELECT object_id, pid, src_big FROM photo WHERE pid IN 
    (SELECT pid FROM photo_tag 
    WHERE pid IN (SELECT pid FROM photo_tag WHERE subject = me()) 
    AND NOT (pid IN 
     (SELECT pid FROM photo_tag WHERE pid IN 
     (SELECT pid FROM photo_tag WHERE subject = me()) 
     AND subject != me()) 
    ) 
) 
+0

感謝您的解決方案法比奧!我在FQL瀏覽器中查看了一下,它很好地工作。現在,如果只有用戶可以完全標記包含多個人的照片,或者是否有某種方法可以過濾掉這些圖片......哈哈 –

相關問題