2014-04-03 3 views
0

FQL을 사용하여 Facebook에서 데이터를 수신하고 있습니다. 보다 구체적으로 : 팬 페이지의 공개 이벤트 데이터입니다.If-statement 또는 case with FQL where-clause

지금 당장 내 쿼리는 시작 시간이 이전 또는 이전 인 이벤트 만 사용합니다. 따라서 시간이 15:01이고 start_time이 15:00이면 이벤트가 목록에 없습니다. 그게 내가 도움이 필요한 곳이야. 당신이 알아야 할 것은 모든 이벤트가 end_time을 갖는 것은 아닙니다. 그래서 나는 if 문이나 where 절을해야한다.

내 원래 코드 : 나는> = 지금 대신 START_TIME 다음과 같은 코드를 넣어 시도()하지만 코드가 작동하지 않은

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 

.

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

감사합니다.

답변

0

나는 경우 문이나 경우도 문이 FQL에서 허용되는 것을 발견했다.

내가 사용할 수있는 기능의 목록을 발견, http://steve.veerman.ca/2012/facebook-api-fql-tutorial/

내 솔루션에서 등 사업자가 쿼리에서 다음 삭제했다 : 나는 또한 select 문에 now()을 추가

AND 
    start_time >= now() 

를 얻을 수 있습니다 현재 시간 (PHP로 할 수 있음에도 불구하고).

그럼 내가 얼마나 관련성이 있었는지에도 불구하고 모든 모든 이벤트가 종료됩니다. 나는 그들에게 if 문으로 정렬하고 end_time이 있다면 start_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