Php 多列中的计数值

Php 多列中的计数值,php,mysql,Php,Mysql,我有一个数据库表,其中包含用户提交的3个问题的答案。所有问题的答案均为是/否。像这样 username question1 question2 question3 user1 yes no yes user2 yes yes yes user3 yes

我有一个数据库表,其中包含用户提交的3个问题的答案。所有问题的答案均为是/否。像这样

username        question1          question2         question3

user1           yes                no                yes
user2           yes                yes               yes
user3           yes                no                no
user4           no                 no                no
我想做的是收集每列中每个“是”的计数。因此,我对每个问题都有肯定的回答,如“问题1=”3“,问题2=”1”等


目前,我对每个问题都有3个单独的陈述,这很好,但我只是想知道是否有一种方法可以将这些结合到一个陈述中,使其更有效

这可以通过围绕
CASE
语句的简单聚合
SUM()
(不使用
GROUP BY
)来完成。如果该值为
yes
,则返回1,否则返回0。然后通过
SUM()
将这些1添加到列上

MySQL还允许进行简单的布尔比较,返回1或0,但这不能移植到其他RDBMS

/* Shorter version, only works for MySQL */
SELECT 
  SUM(question1 = 'yes') AS q1,
  SUM(question2 = 'yes') AS q2,
  SUM(question3 = 'yes') AS q3
FROM yourtable

你能发布你的sql语句让我们看看如何组合吗?如果你想使用int值(而不是会产生问题的字符串),让我们说1表示是,0表示否,你可以在每一列上使用一个和理论上我认为这可能是可能的,但我怀疑这将需要大量的自连接和联合。这是最好的(或至少更好)练习将布尔值存储为TINYINT(0表示否,1表示是)。
/* Shorter version, only works for MySQL */
SELECT 
  SUM(question1 = 'yes') AS q1,
  SUM(question2 = 'yes') AS q2,
  SUM(question3 = 'yes') AS q3
FROM yourtable