在FQL中订购BY 2字段

时间:2012-10-07 09:04:49

标签: facebook api sorting facebook-fql

我正试图通过2个标准对朋友进行排序,这些标准首先使用我的应用程序并且与我共享最多的共同朋友。有没有办法按FQL中的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
图API / FQL资源管理器中的

Execute

1 个答案:

答案 0 :(得分:2)

  

我找到了使用mutual_friend_count * is_app_user作为排序条件的工作,但它仅适用于app_user = 1,并且不对0的那些人执行排序。

当然不会,因为f.e. 66 * 0给出与15 * 0相同的排序值。

但假设没有人的共同朋友数大于99999,你可以按is_app_user * 99999 + mutual_friends_count排序。

这将为app用户提供99999的“基础值”,并获得添加的共同朋友的数量。对于非应用用户,基值仍为0,并且还会添加共同朋友的数量。

因此,应用用户将比非应用用户具有更高的排序值,因此将排名第一 - 考虑添加的mutual_friends_count。非应用用户仍然可以通过他们的mutual_friends_count排名,但仅限于应用用户之后,因为他们的排序值更低。

唯一可能有点棘手的是将+符号放入查询中 - 当通过URL将其传递给Graph API Explorer时,必须将URL编码为%2B,但它不会之后将显示为查询的一部分。但是从结果来看,它似乎仍在使用它来进行查询:

See example query here.