FQL多重查询并不总是有效

时间:2013-03-04 20:38:09

标签: ios facebook facebook-graph-api facebook-fql fql.multiquery

我对FQL多重查询有一个奇怪的问题

这是我的疑问:

NSString *query =
        @"{"
        @"\"events_info\":\"SELECT name, description, pic_small, pic_big, eid, venue, location, start_time, end_time, timezone, update_time, not_replied_count, privacy, has_profile_pic, version, can_invite_friends, is_date_only, hide_guest_list, host, creator, all_members_count, attending_count, not_replied_count , declined_count, pic_cover FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND start_time > '2013-03-03T00:23:00' OR uid = me())\","
        @"\"event_venue\":\"SELECT name, type,page_id, location FROM page WHERE page_id IN (SELECT venue.id FROM #events_info)\","
        @"\"event_creator\":\"SELECT name, page_id, type FROM page WHERE page_id IN (SELECT creator.id FROM #events_info)\""
        @"}";

这个查询有时不起作用......我不明白什么是错的。 如果不工作,如果我删除第三个查询(event_creator),一切正常。

错误:

Error Domain=com.facebook.sdk Code=5 "The operation couldn’t be completed. (com.facebook.sdk error 5.)" UserInfo=0xaab6c50 {com.facebook.sdk:ParsedJSONResponseKey={
    body =     {
        "error_code" = 1;
        "error_msg" = "An unknown error occurred";
    };
    code = 500;
}, com.facebook.sdk:HTTPStatusCode=500}

1 个答案:

答案 0 :(得分:1)

第一个查询中,您要检索:

  • 活动创建者的页面,
  • 此次活动的场地页面。

你得到的结果如下:

{
    "venue": {
        "id": 421431217881031
    }, 
    "creator": 844413621
},

第二次查询中,您可以获得会场页面的信息:WHERE page_id IN (SELECT venue.id FROM #events_info)。这样做非常好,因为您确实需要将场地的ID照射到 venue数组中。

第三次查询中,creator不再是数组了!它代表页面ID(或用户的页面,但这不是问题,因为它们将被过滤)。在这种情况下,您可以直接获得ID

WHERE page_id IN (SELECT creator FROM #events_info)

而不是

WHERE page_id IN (SELECT creator.id FROM #events_info)

相关问题