我对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}
答案 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)
。