Facebook най-добрият начин да направите FQL присъединяване с event и event_member?

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

Мога да получа добре събитията на потребителя, но в момента търся статуса на 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-те заявки ще бъдат по 1 всяка за 4 възможни отговора за събитие : присъствам, не съм сигурен, отказах и не_отговорих.

person Nate    schedule 27.06.2009