2011-10-10 70 views
0

我读here我可以在COUNT中包含一个参数来返回一个计算值。我正在尝试以下,但我错过了一些东西。你能帮我吗?谢谢!检索计算表达式的COUNT

mysql_select_db(DATABASE_NAME, $connection); 
    $client = "demo/"; 
    $result = mysql_query 
    (
     "SELECT 
     COUNT(page_max > 126) AS completed 
     FROM " .SESSIONDB. " 
     WHERE client = '$client' 
     AND page = 'interaction.php' 
     " 
    ); 
    if(mysql_error()) die(DIRECTORY_TITLE . " - Error DBA110 " . mysql_error()); 
    // output THE QUERY 
    while($row = mysql_fetch_assoc($result)) 
    { 
     echo $row['completed']; 
    } 
+0

请在此处添加您的餐桌细节。 –

+0

你正在收到什么错误消息? –

回答

0

这应该做你想要什么:是不是NULL

SELECT COUNT(IF(page_max>126,1,NULL)) AS completed .... 

COUNT次数进行计数。该表达式将page_max大于126的任何内容变为1以及任何不属于NULL的内容。

这就是说,为什么不把page_max移动到WHERE的条件?

+0

辉煌谢谢 - 因为我想返回一些具体的计数,从相同的查询,page_min,page_max,page_average – giles

1

尝试

"SELECT 
    COUNT(*) AS completed 
    FROM " .SESSIONDB. " 
    WHERE client = '$client' AND page_max > 126 
    AND page = 'interaction.php'" 
1

这个怎么样

SELECT 
SUM(CASE WHEN page_max > 126 THEN 1 ELSE 0 END) AS completed 
FROM table 
WHERE client = '$client' 
AND page = 'interaction.php' 

或者正如尼科洛尼说,移动page_max到WHERE条件,如果你不需要的物品的总数。