[英]How to get the total number of fields with a certain value on PHP-MySQL
我有20列,分別命名為qa1, qa2, qa3 up to qa20
,它們將保存YES或NO的值。 如何獲取保存YES的列數和保存NO的列數。
另外:表描述是這樣的:
examid int,
firstname varchar(20),
middlename varchar(20),
lastname varchar(20),
q1 varchar(1),
q2 varchar(1), .... up to q20(1)
對於前。 測試數據將是
q1 = y
q2 = n
q3 = y
q4 = n
q5 = y
q6 = n
q7 = y
q8 = n
q9 = y
q10 = y
我想得到:
y = 6
答案n = 4
答案
我想通了,使用php和mysql我來到:
$yescounter = 0;
$nocounter = 0;
for($x1 = 1; $x1<= 20; $x1++){
$trial1 = mysql_query("SELECT qanswer$x1 FROM tb_erm_exam_results WHERE qanswer$x1='y'");
$t1 = mysql_num_rows($trial1);
if($t1 == 1) { $yescounter++; } else { $nocounter++; }
}
echo "YES is: ".$yescounter." while NO is:".$nocounter;
只是給出了相同的結果,但沒有復雜的mysql查詢。
SELECT id, (qa1 = 'Y' + qa2 = 'Y' + ... + qa20 = 'Y') AS yes_count,
(qa1 = 'N' + qa2 = 'N' + ... + qa20 = 'N') AS no_count
FROM yourtable
如您所見,以這種方式構造表會使諸如此類的查詢變得復雜。 如果使用每個答案都在不同行中的表,那會更好。 那你可以做
SELCT id, SUM(qa = 'Y') AS yes_count, SUM(qa = 'N') AS no_count
FROM yourTable
GROUP BY id
該表的結構如下:
CREATE TABLE yourTable (
id INTEGER NOT NULL, -- Survey ID
question_num INTEGER NOT NULL, -- 1 to 20
qa CHAR(1), -- Y or N
UNIQUE KEY (id, question_num)
)
試試這給我的結果。
select count(*) from sample where 'yes' IN (q1,q2,q3,q4,q5,q6,q7,q8,q9......)
經過一個小時的試用,我來到了這個解決方案,它無需太多查詢即可產生結果。
$yescounter = 0;
$nocounter = 0;
for($x1 = 1; $x1<= 50; $x1++){
$answercounter1 = mysql_query("SELECT qanswer$x1 FROM tb_erm_exam_results WHERE qanswer$x1='y'");
$ac1 = mysql_num_rows($answercounter1);
if($ac1 == 1) { $yescounter++; } else { $nocounter++; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.