1

我试图弄清楚是否可以使用 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 调用,然后对返回的数据进行排序,这确实降低了我的应用程序的速度。

谁能建议我如何实现我想要的,从而优化查询?

很抱歉发了这么长的帖子,但这几天一直困扰着我!

谢谢

4

1 回答 1

0

从我在阅读中可以看出,你想要得到:

  1. 你所有朋友的名单,
  2. 每个朋友都说他们会参加的最近一次活动。

这与此处提出的问题非常相似,不同之处在于他要为每个项目寻找 2 个结果,而您只搜索一个。

于 2010-10-08T15:15:53.223 回答