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