2009-06-25 3 views
14

Facebookアプリでは、各イベントの日付範囲とrsvpステータスのユーザーイベントを取得する必要があります。Facebook - イベントとevent_memberとのFQL "join"を行う最善の方法?

ユーザーのイベントはきれいですが、現時点では、各イベントのrsvpステータスを一度に1つずつ検索しており、多数のイベントが発生しているユーザーのためにタイムアウトしています。

私はこの方法をユーザーのイベントを取得しています:

$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の数は(私が考える3)rsvp_possibilitiesの数まで呼び出しを減少するであろう、しかし理想的には、私はむしろ1つのFQL呼び出しでそれをやりたいと思います。

答えて

7

しかし、FQL.Multiqueryを使用すると、4つのクエリを1回の呼び出しでバッチすることができます。出席、不明、拒否、およびnot_repliedの4つのクエリは、それぞれ4 possible event responsesに対して1になります。

関連する問題