Facebook — der beste Weg, dies zu tun FQL "join" mit Ereignis-und event_member?

In einer Facebook-app die ich brauche, um eine Benutzer-events für einen Zeitraum und seine rsvp-status für jedes Ereignis.

Ich kann die Benutzer-events in Ordnung, aber im moment bin ich auf der Suche bis die rsvp-status für jedes Ereignis ein, und die app timing für Leute, die mit einer Vielzahl von Veranstaltungen.

Ich bin immer der Benutzer die Ereignisse auf diese Weise:

$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";

Dieser Teil ist in Ordnung.

Und hier ist, wie ich immer bin rsvp-status für jedes Ereignis, ein zu einer Zeit:

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

Dies funktioniert auch auf einer event-by-event-basis, aber die app-Seite mal aus, wenn der Benutzer über viele Veranstaltungen, da jede Veranstaltung mit zu bekommen, sah jedes mal.

Mit normalen SQL, ich könnte dies ganz einfach mit einem join, aber Verknüpfungen sind nicht erlaubt im FQL.

Eine mögliche Lösung ist, Sie zu tun in den Reihen, indem die Schleife durch jede rsvp_status Möglichkeit, wie diese:

$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";

Dies würde die Verringerung der Zahl der FQL Anrufe auf die Anzahl der rsvp_possibilities (drei glaube ich), aber im Idealfall würde ich lieber tun Sie es in einer FQL Aufruf.

InformationsquelleAutor | 2009-06-25
Schreibe einen Kommentar