返回多个计数值

时间:2015-04-10 07:59:53

标签: php mysql count

这可能是一个简单的问题,我搜索过但不确定官方描述是什么,我想做什么....

我有一张桌子记录有列录音的建筑物的详细信息,是没有或没有记录宽带,电话等事物...

我正在尝试构建一个返回每个值的查询,有点像报告,但是想要保留我没有为每个值运行单独查询的内容(记住干!)。

如果我知道我正在寻找“是”,“否”或“未记录”,是否可以通过一个查询分别返回所有3个值?

我目前只知道如何返回单个值,我不想创建一个充满重复代码的页面!

表:网站(原谅布局不佳!)

:ID - SITE ---------------- BBAND ---- PHONE
:1 ---车站-----是---------是
:2 ---德雷克斯大厦---是---------否
:3 ---避暑山庄----不----------是的 :4 --- Prospect House ---是--------是

当前代码是(我不知道如何进行多次计数):

$result=mysql_query("SELECT count(*) as bband from sites WHERE bband =     'Yes'");
$data=mysql_fetch_assoc($result);
echo "Broadband Yes:"; 
echo $data['bband'];

然后我必须重复此代码为“否”,然后再重复“未记录”。这种方法错误,因为效率非常低。

理想情况下,我希望能够回显/打印单个结果,以便将它们添加到表格/布局中。

2 个答案:

答案 0 :(得分:0)

SELECT SUM(val = 'no')as count_no, SUM(val='yes') as count_yes, SUM(val='not') as count_not FROM...
如果val等于'no',则

val ='no'等于1,否则等于0。因此,使用SUM(val ='no'),您可以计算val ='no'的情况。因此,您可以“计算”不同的val =件而不将其放在sql-statment的WHERE部分中。

答案 1 :(得分:0)

我认为你正在寻找类似的东西:

SELECT *, COUNT(CASE WHEN value="yes" THEN 1 END) AS 'total_yes',
          COUNT(CASE WHEN value="no" THEN 1 END) AS 'total_no',
          COUNT(CASE WHEN value="not recorded" THEN 1 END) AS 'total_not_recorded'
FROM myTable