Facebook FQL where子句中的If语句或大小写

Facebook FQL where子句中的If语句或大小写,facebook,if-statement,facebook-fql,case,where-clause,Facebook,If Statement,Facebook Fql,Case,Where Clause,我正在使用FQL从Facebook接收数据。更具体:来自粉丝页面的公共事件数据 现在,我的查询只接受开始时间早于或等于现在的事件。因此,如果时间是15:01,开始时间是15:00,则事件不在列表中。那就是我需要帮助的地方。你需要知道的是,并非所有事件都有结束时间。所以我要么做一个if语句,要么在where子句中做一个case 我的原始代码: SELECT name, pic, start_time, end_time, location, description, eid, ho

我正在使用FQL从Facebook接收数据。更具体:来自粉丝页面的公共事件数据

现在,我的查询只接受开始时间早于或等于现在的事件。因此,如果时间是15:01,开始时间是15:00,则事件不在列表中。那就是我需要帮助的地方。你需要知道的是,并非所有事件都有结束时间。所以我要么做一个if语句,要么在where子句中做一个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
我尝试输入以下代码,而不是现在就开始,但代码不起作用

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

感谢您的帮助。

FQL不允许if语句;但是,我建议您的问题的更好解决方案是完全忽略结束时间,并根据开始时间范围选择事件。例如,这将给出发生在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

我发现FQL中既不允许if语句也不允许case语句

我在上找到了可用函数、运算符等的列表

我的解决方案是从查询中删除以下内容:

    AND
    start_time >= now()
我还向select语句添加了now,以获取当前时间,尽管我可以在PHP中这样做


然后我会把所有事件都公布出来,不管它们有多重要。我会用if语句对它们进行排序,并比较开始时间和结束时间(如果有结束时间)。

尽管这篇文章很旧,但我想指出一点讽刺的是,你提到的博客是我自己的,你对我最初的回复没有任何评价。