2014-01-30 36 views
-1

我试图从MySQL表(列referrer)检索引用URL的列表,计算出现多次的URL并按降序列出URL和计数。我不能解决它!对sql结果进行计数并使用PHP显示

$ref=$icdb->get_row("SELECT count(1) AS frequency, referrer FROM url_log WHERE u = '".$dom."'GROUP BY referrer ORDER BY frequency DESC"); 

foreach ($ref as $details) { 
echo $details['referrer']."</td><td>".$details['frequency']."</td>"; 
} 
+0

changet到COUNT(*) – fmodos

+0

是你有简单的,你是不排除与1从结果计数的项目设置的问题? –

+0

这个句子的语法并没有真正指向他希望排除第一个数的行。 @Ryerye你能澄清吗? –

回答

3

如果您想筛选出一个的计数的项目,你可能会考虑使用HAVING条款:

SELECT COUNT(1) AS frequency, referrer 
FROM url_log 
WHERE u = ? 
GROUP BY referrer 
HAVING frequency > 1 
ORDER BY frequency DESC 

在本质上HAVING子句允许您提供后初始的额外的过滤条件计算由WHERE子句的主查询指定的结果集。此功能最常用的用法可能是在汇总字段中指定过滤条件。

+0

如何显示数组?这不起作用: '的foreach($ REF为$细节){ 回声$细节[ '引荐'] “​​” $细节[ '频率'] “”;。。。 }' – ryerye

+0

@ryerye很难说,因为我似乎不知道'$ ref'是什么,因为您似乎正在使用一些自定义数据库类。为什么不把'var_dump($ ref)'结果添加到你原来的问题中。 –

+0

@ryerye另外,你确定'$ ref'是否包含整个结果集?使用名为'get_row'的方法返回结果集中的所有行似乎很奇怪。 –

相关问题