当我需要来自两个连接表的相关数据时,FQL替代SQL JOIN?

时间:2012-12-16 19:03:02

标签: facebook-fql status

我正在尝试获取过去喜欢任何用户状态的朋友列表。我有一个下面的多个查询将执行此操作,但结果不按帖子分组。所以,我得到了所有喜欢这些帖子的朋友的列表,但我不知道哪些朋友喜欢哪些帖子。我知道我可以为每个状态单独调用,但如果可能的话,我想在一个调用中执行此操作。有什么想法吗?

$queries = '{
    "statuses":"SELECT status_id FROM status WHERE uid=me()",
    "likes":"SELECT user_id FROM like where object_id IN ( SELECT status_id FROM #statuses )",
    "liker":"SELECT name, pic_small FROM user WHERE uid IN (SELECT user_id FROM #likes)"
}';
$param = array(
    'method' => 'fql.multiquery',       
    'queries' => $queries,       
    'callback' => '');       
$queryresults = $facebook->api($param);

1 个答案:

答案 0 :(得分:0)

我以为你可以做到:

$queries = '{
    "statuses":"SELECT status_id FROM status WHERE uid=me()",
    "likes":"SELECT user_id, object_id FROM like where object_id IN ( SELECT status_id FROM #statuses )",
    "liker":"SELECT name, pic_small, uid FROM user WHERE uid IN (SELECT user_id FROM #likes)"
}';

然后,在您的最后,您将拥有将每个status_id映射到name数组所需的所有信息。它不像执行SQL JOIN那样干净或微不足道,但由于这不是一个选项,如果你想在一个FQL调用中获取所有数据,这是最好的。