2014-09-12 33 views
0

我正在尋找構建動態查詢並返回在線用戶的方式。 請檢查我的代碼如下。我找不到錯在哪裏? 返回的我:未知列「is_online」在「where子句」 ......MySQL |動態查詢 - 在線用戶

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'; 
+0

你可能想結算我的解決方案在這裏http://stackoverflow.com/questions/25726512/how-to-insert-dynamic-multidimensional-array-in-database-with-mysqli – SuperDJ 2014-09-12 13:28:31

+1

我猜你可以'在WHERE條件中使用別名,你應該可以在那裏使用'COUNT(s.userid)= 1',或者把整個東西包裝在一個子查詢中。 – stakolee 2014-09-12 13:30:08

回答

1

你想條款的部分更改爲having條款:

having is_online = 1 

該變量的集合函數,因此您不能將該值放在where子句中。但是,您可以改爲有:

where s.userid is not null 

,或者更簡單,消除了條件,改變left joininner join

+0

謝謝! s.userid不是空作用很好! – user889349 2014-09-12 13:37:12