我试图弄清楚是否可以使用 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”中包含的两个不同事件,则结果中只有一个他们的名字实例,这也是不可取的。
目前,一旦获得“event_id”结果,我就进行了 20 次 API 调用,然后对返回的数据进行排序,这确实降低了我的应用程序的速度。
谁能建议我如何实现我想要的,从而优化查询?
很抱歉发了这么长的帖子,但这几天一直困扰着我!
谢谢