我试图了解是否有可能使用FQL多查询而不是多个API调用。
这是我的代码:
var queries : Object = {
"user_list":"SELECT uid2 FROM friend WHERE uid1 = "+uid
,"event_id":"SELECT eid, start_time, end_time, location, pic, name FROM event
WHERE eid IN (SELECT eid FROM event_member
WHERE uid IN (SELECT uid2 FROM #user_list)
AND rsvp_status='attending') AND start_time > " + nowSecs + "
AND start_time < " + (nowSecs + 2500000) + " ORDER BY start_time ASC LIMIT 20"
"user_name":"SELECT name FROM user
WHERE uid IN (SELECT uid FROM event_member
WHERE eid IN (SELECT eid FROM #event_id)
AND uid IN (SELECT uid2 FROM #user_list) AND rsvp_status='attending')"
};
目前在我的'event_id'查询中提取的结果太多,我目前获得了存储在'user_list'查询中的每个人的完整事件列表,我理想情况下只想获得1个事件每个人,然后对这些结果进行排序。我似乎无法做到这一点,使用LIMIT我总共得到1个结果,但不是每个人都有。
此外,更重要的是,我只想在'user_name'查询中为每个事件提供一个结果,此时我有时会得到多个参与同一事件的成员,这会导致问题,因为我无法匹配一旦收到结果,用户就会以相应的事件命名。我也注意到,如果同一个用户要去 'event_id'中包含两个不同的事件,结果中只有一个名称实例,这也是不可取的。
目前我正在进行20次API调用,一旦我获得'event_id'结果,然后对返回的数据进行排序,这实际上会减慢我的应用。
有人可以建议我如何实现我的目标,从而优化查询吗?
很抱歉这篇长篇文章,但这已经有好几天了!
由于
答案 0 :(得分:0)
从阅读中我可以看出,你想得到:
这与提出的here问题非常相似,但他会为每个项目搜索2个结果,而您只搜索一个。