2012-11-26 90 views
2

我一直在使用下面的FQL,試圖找出如何讓所有的朋友的頁面喜歡:如何讓所有的朋友的頁面使用喜歡FQL

SELECT name FROM page WHERE page_id IN 
    (SELECT page_id FROM page_fan WHERE uid IN 
     (SELECT uid1, uid2 FROM friend WHERE uid1 = me()) 
    ) 

它的工作原理有點符合我的心意,但我無法分辨哪個'uid'屬於哪個頁面名稱。 類似下面的返回:

{ 
    "data": [ 
    { 
     "name": "Snoop Dogg" 
    }, 
    { 
     "name": "Good Grief" 
    }, 
    { 
     "name": "Aaliyah" 
    } 
    ] 
} 

我也使用圖形API嘗試,但超時。有什麼方法可以讓我的結果看起來更像:

{ 
    "data": [ 
    { 
     "uid" : "987234", 
     "name": "Snoop Dogg" 
    }, 
    { 
     "uid" : "987234", 
     "name": "Good Grief" 
    }, 
    { 
     "uid" : "234789", 
     "name": "Aaliyah" 
    } 
    ] 
} 

在此先感謝。

+0

如果在我的情況下多查詢是某種方式的選擇,我當然也對此敞開心扉。 – daleyjem

回答

3

/[Friend-ID]/likes對我很好。當然,有了「friends_likes」的許可。而這也爲我的作品,它只是需要一些時間,因爲它得到的每一個朋友的喜歡:

SELECT page_id, name FROM page WHERE page_id IN 
    (SELECT page_id FROM page_fan WHERE uid IN 
    (SELECT uid1, uid2 FROM friend WHERE uid1 = me()) 
) 

對於網頁連接至用戶,您將需要一個連接。在任何情況下,我都希望使用圖形API並只爲一個用戶提供。

如果您只需要在網頁和用戶ID的ID,還有一個更簡單的方法,如果你只是使用第一子選擇:

SELECT uid, page_id FROM page_fan WHERE uid IN 
     (SELECT uid1, uid2 FROM friend WHERE uid1 = me()) 

不幸的是,沒有在FQL JOIN,但也有Multiqueries:

https://developers.facebook.com/docs/technical-guides/fql

所以,QUERY1將高於最後一個,QUERY2將是類似的東西:

SELECT page_id, name FROM page WHERE page_id IN (SELECT page_id FROM #query1)" 
+0

你是第一種使用Graph API的方法,在我的情況下有很多朋友不適用。它超時,並不是一個可靠的解決方案。這就是FQL更好的選擇,但你是FQL select語句是選擇page_id和[page]名稱字段。我需要頁面的名稱和喜歡那個頁面的朋友的uid。 – daleyjem

+0

我更喜歡擁有頁面名稱和uid,因爲它是我以後的名字。如果我必須做多個查詢,我至少希望使用最優化和快速的方法。 – daleyjem

+0

luschn提出的多查詢是最快的方法(我認爲)。從第一個查詢中獲得組合uid和page_id,從第二個查詢中獲得page_id和name - 因此,您只需將這兩個數據集合到所需的數據集即可。我沒有直接在SQL中看到這樣做 - 但是在事後處理結果集時,您只需組合這兩者中的數據即可。 – CBroe

相關問題