2012-10-07 54 views
1

我正在嘗試使用2個標準對朋友進行排序,這些標準先使用我的應用程序,並與我擁有最多的共同朋友。有什麼辦法可以按FQL中的2個字段排序嗎?FQL排序BY 2字段

我剛找到一份工作圍繞使用mutual_friend_count * is_app_user作爲排序標準,但它僅適用於APP_USER = 1,不執行排序爲那些誰是0

原來的查詢是:

SELECT uid, name, is_app_user, mutual_friend_count 
FROM user 
WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND uid != me() ORDER BY (mutual_friend_count * is_app_user) DESC LIMIT 333 

Execute in graph API/FQL explorer。

回答

2

我剛找到一份工作圍繞使用mutual_friend_count * is_app_user作爲排序標準,但它僅適用於APP_USER = 1,不執行排序爲那些誰是0

當然它不,因爲fe 66 * 0給出與15 * 0相同的排序值。

但是,假設沒有人的共同朋友數大於99999,則可以按is_app_user * 99999 + mutual_friends_count排序。

這會給應用程序用戶一個99999的「基礎值」,並獲得添加的共同朋友的數量。對於非應用用戶,基準值將仍然爲0,並獲得添加的共同朋友的數量。

因此,應用程序用戶將具有比非應用程序用戶更高的排序值,因此將排名第一 - 考慮到了添加的mutual_friends_count。非應用用戶仍然可以通過mutual_friends_count獲得排名,但只能在應用用戶之後進行排名,因爲他們的排序值要低得多。

唯一可能有點棘手的是獲取查詢中的+符號 - 當它通過URL傳遞給Graph API Explorer時,它必須被URL編碼爲%2B,但它不會顯示show它作爲查詢的一部分。但從一看結果,似乎在使查詢仍須使用它:

See example query here.

+0

這對我的作品。非常感謝。 –