简体   繁体   English

如何计算表中的多个列并使用php显示它们

[英]How to count multiple columns in a table and show them using php

I have a table with some columns (see the pic below): 我有一些带有一些列的表(见下图):

My Table: 我的表:

在此输入图像描述

I'd like to count values in that columns (how many "ok" and "no" I have in column over05, over15, etc etc) using some filters (ie best_bets between 1.20 and 1.50) and show them using php 我想计算那些列中的值(使用一些过滤器(即1.20和1.50之间的best_bets),使用一些过滤器(即,介于1.20和1.50之间)中有多少“ok”和“no”,我们在列中超过05,超过15等)并使用php显示它们

Now I can do a count just for a column using code below: 现在,我可以使用以下代码对列进行计数:

    $result=mysql_query("SELECT count(over15) as total from risultati WHERE over15 = 'OK' AND best_bets >= 1.15 AND best_bets <= 1.50");
$data=mysql_fetch_assoc($result);
echo $data['total'];

but I'd like to do it for more columns 但我想为更多的专栏做这件事

Regards 问候

EDIT:I tried in this way, but it's not working: 编辑:我试过这种方式,但它不起作用:

$result=mysql_query("SELECT SUM(CASE WHEN over05 = 'OK' THEN 1 ELSE 0 END) AS OK_05,
       SUM(CASE WHEN over15 = 'OK' THEN 1 ELSE 0 END) AS OK_15,
       SUM(CASE WHEN over25 = 'OK' THEN 1 ELSE 0 END) AS OK_25,
       SUM(CASE WHEN over35 = 'OK' THEN 1 ELSE 0 END) AS OK_35,
       SUM(CASE WHEN over45 = 'OK' THEN 1 ELSE 0 END) AS OK_45
FROM risultati
WHERE best_bets BETWEEN 1.15 AND 1.5O");
$data=mysql_fetch_assoc($result);
echo $data['OK_15'];
echo $data['OK_25'];
echo $data['OK_35'];
echo $data['OK_45'];

edit2: I also tried in another way, but nothing: edit2:我也尝试过另一种方式,但没有:

$result=mysql_query("SELECT SUM(CASE WHEN over05 = 'OK' THEN 1 ELSE 0 END) AS OK_05,
       SUM(CASE WHEN over15 = 'OK' THEN 1 ELSE 0 END) AS OK_15,
       SUM(CASE WHEN over25 = 'OK' THEN 1 ELSE 0 END) AS OK_25,
       SUM(CASE WHEN over35 = 'OK' THEN 1 ELSE 0 END) AS OK_35,
       SUM(CASE WHEN over45 = 'OK' THEN 1 ELSE 0 END) AS OK_45
FROM risultati
WHERE best_bets BETWEEN 1.15 AND 1.5O");



while ($row = mysql_fetch_assoc($result)) 
{
    echo $row['OK_05'];
    echo $row['OK_15'];
    echo $row['OK_25'];
    echo $row['OK_35'];
    echo $row['OK_45'];

}

Use condtional aggregation: 使用条件聚合:

SELECT SUM(CASE WHEN over05 = 'OK' THEN 1 ELSE 0 END) AS OK_05,
       SUM(CASE WHEN over15 = 'OK' THEN 1 ELSE 0 END) AS OK_15,
       SUM(CASE WHEN over25 = 'OK' THEN 1 ELSE 0 END) AS OK_25,
       SUM(CASE WHEN over35 = 'OK' THEN 1 ELSE 0 END) AS OK_35,
       SUM(CASE WHEN over45 = 'OK' THEN 1 ELSE 0 END) AS OK_45
FROM risultati
WHERE best_bets BETWEEN 1.15 AND 1.5O    -- or whatever restrictions you want

This approach allows you to gather stats for all your age columns in a single query, whereas putting the column check for 'OK' limits to a single column in one query. 此方法允许您在单个查询中收集所有年龄列的统计信息,而将列检查“确定”限制为一个查询中的单个列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM