MySQL |动态查询 - 在线用户

时间:2014-09-12 13:26:22

标签: php mysql sql

我正在寻找构建动态查询和返回在线用户的方法。 请检查下面的代码。我无法找到错误的地方? 回复我:未知专栏' is_online'在' where子句' ...

    if (isset($options['online']) && $options['online'] == 1) {
       $where[]  = ' AND is_online = 1';
    } 

    $sql = ' SELECT 
       u1.*,
       u2.*,
       COUNT(s.userid) AS is_online
    FROM `#__users`     
    AS 
        u1 
    LEFT JOIN 
        `#__ds_users`   
    AS 
        u2 
    ON 
        u1.id       = u2.id 
    LEFT JOIN 
        `#__session`    
    AS 
        s 
    ON 
        u1.id       = s.userid  
    WHERE 
        1=1
    '.implode('', $where).'
    GROUP BY 
    u1.id';

1 个答案:

答案 0 :(得分:1)

您希望将该子句的该部分更改为having子句:

having is_online = 1

此变量使用聚合函数,因此您无法将值放在where子句中。但是,您可以改为:

where s.userid is not null

或者,更简单地说,消除条件并将left join更改为inner join