找到最常见的答案

时间:2016-01-18 13:05:32

标签: php mysql

我一直在关注一个在线教程来构建一个测验来计算sql表的结果。

测验目前的工作方式是创建一个字符串,具体取决于表中每个类别出现的频率,但我想尝试做的是用最常见的单个类别填充字符串。

任何人都可以帮助我实现这个目标吗?

到目前为止我的代码:

$query = "SELECT result FROM quiz_key WHERE question IN ('$Q1','$Q2','$Q3','$Q4','$Q5','$Q6','$Q7','$Q8','$Q9','$Q10')";
$result = mysql_query($query);

$cat_a = $cat_b = $cat_c = $cat_d = $cat_e = $cat_f = 0;
while($row = mysql_fetch_array($result)) {
    $cat = $row['category'];
    if ($cat == "A") {
        $cat_a += 1;
    } elseif ($cat == "B") {
        $cat_b += 1;
    } elseif ($cat == "C") {
        $cat_c += 1;
    } elseif ($cat == "D") {
        $cat_d += 1;
    } elseif ($cat == "E") {
        $cat_e += 1;
    } elseif ($cat == "F") {
        $cat_f += 1;
    }
}

$array = array('A' => $cat_a, 'B' => $cat_b, 'C' => $cat_c, 'D' => $cat_d, 'E' => $cat_e, 'F' => $cat_f);
$str = "";

然后是:

foreach ($array as $i => $value) {
    if ($value >= 6) {      
        $str = $i;
        break;
    } elseif ($value >= 3) {        
        $str .= $i;
    }
}

$var = sort($str);

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

正如@Lino已经指出的那样,如果您不关心这个问题,并且想要计算最佳答案,那么您需要 COUNT(结果),此外还需要 GROUP BY 结果陈述

我只是假设你的桌子看起来像

enter image description here

使用COUNT-GROUP BY语句,您将获得以下结果

(注意:如果您希望答案的答案数最多,请在语句中添加ORDER BY)

enter image description here

执行此SQL-Query时,您可以在PHP中将结果作为数组获取以使用它。