Facebook лучший способ сделать соединение FQL с событием и event_member?

В приложении Facebook мне нужно получить события пользователя для диапазона дат и его статус rsvp для каждого события.

Я могу получать события пользователя в порядке, но в данный момент я просматриваю статус rsvp для каждого события по одному, и время ожидания приложения истекает для людей с большим количеством событий.

Я получаю события пользователя таким образом:

$fql = "SELECT eid, name, start_time, end_time 
        FROM event 
        WHERE eid IN (SELECT eid 
                      FROM event_member 
                      WHERE uid = $user) 
          AND start_time > '$timestamp' 
        ORDER BY start_time";

Эта часть работает нормально.

И вот как я получаю статус rsvp для каждого события, по одному за раз:

$fql = "SELECT rsvp_status 
        FROM event_member 
        WHERE uid = $user
          AND eid = '$event_id'";

Это также отлично работает для каждого события, но время ожидания страницы приложения истекает, когда у пользователя много событий, поскольку каждое событие нужно искать каждый раз.

С обычным SQL я мог бы легко сделать это с помощью соединения, но соединения не разрешены в FQL.

Одно из возможных решений состоит в том, чтобы выполнять их партиями, перебирая каждую возможность rsvp_status, например так:

$fql = "SELECT eid, name, start_time, end_time 
        FROM event 
        WHERE eid IN (SELECT eid 
           FROM event_member 
           WHERE uid = $user 
           and rsvp_status = 'attending') 
        AND start_time > '$timestamp' 
        ORDER BY start_time";

Это уменьшит количество вызовов FQL до количества rsvp_possibilities (думаю, три), но в идеале я бы предпочел сделать это за один вызов FQL.


person Community    schedule 25.06.2009    source источник


Ответы (1)


Невозможно выполнить соединение, однако вы можете использовать FQL.Multiquery. чтобы объединить ваши 4 запроса в один вызов. 4 запроса будут по одному для 4 возможных ответов на события. : посещение, неуверенность, отклонение и не_ответ.

person Nate    schedule 27.06.2009