2014-04-03 80 views
0

我正在使用FQL從Facebook接收數據。更具體:來自粉絲頁面的公共活動的數據。如果在FQL語句或案例條款

現在我的查詢只需要有一個開始時間在現在或之前的事件。所以如果時間是15:01而start_time是15:00,那麼事件不在列表中。這是我需要幫助的地方。你需要知道的是,並非所有的事件都有end_time。所以我要麼必須在where語句中做if語句或case。

我的原代碼:

SELECT 
     name, pic, start_time, end_time, location, description, eid, host 
    FROM 
     event 
    WHERE 
     eid IN (SELECT eid FROM event_member 
     WHERE uid = 1 
     OR uid = 2) 
    AND 
     start_time >= now() 
    ORDER BY 
     start_time desc 

我試圖把下面的代碼,而不是START_TIME> = NOW(),但這些代碼都沒有奏效。

  CASE 
      WHEN end_time IS NULL then 'start_time >= now()' 
      ELSE 'end_time >= now()' 

謝謝你的幫助。

回答

0

我發現,無論if語句也不case語句被允許在FQL。

我發現可用功能的列表,運營商等在http://steve.veerman.ca/2012/facebook-api-fql-tutorial/

我的解決辦法是刪除從查詢以下內容:

AND 
    start_time >= now() 

我還添加now()到SELECT語句,得到目前的時間(儘管我可以在PHP中這樣做)。

然後,我會把所有的事件都拿出來,儘管他們有多相關。我會讓他們用if語句對它們進行排序,並比較start_time和end_time,如果它有end_time。

+0

即使這篇文章已經很老了,我想指出一個諷刺,那就是你提到的博客是我自己的博客,你在我的原始回覆中給了我零分。 –

0

FQL不允許if語句;不過,我建議更好的解決方案是徹底忽略end_time,並根據start_time範圍選擇事件。例如,這會給事件無論是前7天或7天之後,現在發生的事情:

SELECT 
    name, pic, start_time, end_time, location, description, eid, host 
FROM 
    event 
WHERE 
    eid IN (
     SELECT eid FROM event_member 
     WHERE uid = 1 OR uid = 2 
    ) 
    AND 
    (
     start_time >= (now() - (60*60*24*7)) AND 
     start_time <= (now() + (60*60*24*7)) 
    ) 
ORDER BY 
    start_time desc