这可能是一个简单的问题,我搜索过但不确定官方描述是什么,我想做什么....
我有一张桌子记录有列录音的建筑物的详细信息,是没有或没有记录宽带,电话等事物...
我正在尝试构建一个返回每个值的查询,有点像报告,但是想要保留我没有为每个值运行单独查询的内容(记住干!)。
如果我知道我正在寻找“是”,“否”或“未记录”,是否可以通过一个查询分别返回所有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'];
然后我必须重复此代码为“否”,然后再重复“未记录”。这种方法错误,因为效率非常低。
理想情况下,我希望能够回显/打印单个结果,以便将它们添加到表格/布局中。
答案 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