Я пытаюсь понять, можно ли что-то сделать с несколькими запросами 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», а затем сортирую возвращенные данные, что действительно замедляет работу моего приложения.
Может ли кто-нибудь предложить, как я могу добиться того, чего хочу, и, таким образом, оптимизировать запросы, пожалуйста?
Извините за длинный пост, но это уже несколько дней не дает мне покоя!
Спасибо