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