在MySQL中计算民意调查数据

时间:2016-06-03 13:53:25

标签: php mysql

我在mySQL表中有数据列:

question 1 | question2 | question3 | question4

和每个数据将是1到3的数字。我想计算每个问题的1&2,2&3和3的数量,并且具有以下功能,但这些功能无效。

SELECT
     question1 as q1
    ,COUNT(question1) as q1C
     ,question2 as q2
    ,COUNT(question2) as q2C
     ,question3 as q3
    ,COUNT(question3) as q3C
     ,question4 as q4
    ,COUNT(question4) as q4C
    FROM pollOne
     WHERE question1 != 0
     AND  question2 != 0
     AND  question3 != 0
     AND  question4 != 0
     GROUP BY q1, q2, q3, q4

如果我将其拆分为单个问题,那么它确实如下:

SELECT
    question1 as q1
    ,COUNT(question1) as q1C
    FROM pollOne
    WHERE question1 != 0
    GROUP BY q1

但是如果可能的话,我宁愿一气呵成。任何人的想法?

部分回答我自己的问题,但不是解决方案,我在堆栈中遇到过这个链接:

https://stackoverflow.com/a/2421441/5880604

对群组的重要解释通过在mySQL中的使用,并清楚说明为什么我一直试图做的事情不会起作用。

我仍然想知道是否有可能,如果有人有任何见解?

1 个答案:

答案 0 :(得分:0)

好的,克服我的问题的一种粗暴的方法是分别迭代每个问题,在我去的时候将每个问题推送到一个数组。

$data = array();

for ($i=1; $i < 5; $i++) { 
    $sql = "SELECT
        question" . $i . " as q" . $i . "
        ,COUNT(question" . $i . ") as q" . $i . "C
        FROM pollOne
        WHERE question" . $i . " != 0
        GROUP BY q" . $i;
        $result = mysqli_query($connection, $sql);
        while ($row = mysqli_fetch_assoc($result)){
            array_push($data, $row);
        }
}

我确实工作,因为这只是一个只持续几天的小项目,所以我很高兴。