我在 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}
最佳答案
在第一个查询中,您要检索:
- 事件创建者的页面,
- 本次事件的 field 页面。
你得到的看起来像:
{
"venue": {
"id": 421431217881031
},
"creator": 844413621
},
在第二个查询中,您将获取 field 页面的信息,如下所示:WHERE page_id IN (SELECTvenue.id FROM #events_info)
。这做得非常好,因为您确实需要将 field 的 ID
保存到 venue
数组中。
在第三个查询中,creator
不再是数组!它代表一个页面ID
(或用户的,但这不是问题,因为它们将被过滤)。在这种情况下,您可以直接获取ID
:
WHERE page_id IN(从#events_info中选择创建者)
而不是
WHERE page_id IN(从#events_info中选择creator.id)
。
关于ios - FQL 多重查询并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15210677/