我有一個包含8個問題的測驗的用戶答案數據庫。 Q1 - Q8全部都是他們自己的專欄,我想比較所有行,併爲每個回答相同問題的人回答至少5個問題。mySQL查詢比較行和列
所以在這裏,行5和6將作爲2基本上我試圖讓一些大家誰回答至少5題相同的計數。這是可能的與MySQL查詢?
編輯:
在這裏,用戶輸入d乙d A B C d B,用2個同樣回答測驗匹配。這裏的查詢將返回2.
我有一個包含8個問題的測驗的用戶答案數據庫。 Q1 - Q8全部都是他們自己的專欄,我想比較所有行,併爲每個回答相同問題的人回答至少5個問題。mySQL查詢比較行和列
所以在這裏,行5和6將作爲2基本上我試圖讓一些大家誰回答至少5題相同的計數。這是可能的與MySQL查詢?
編輯:
在這裏,用戶輸入d乙d A B C d B,用2個同樣回答測驗匹配。這裏的查詢將返回2.
如果我們的測試只用你的DBDABCDB單線我們可以使用下面的例子:
SELECT * FROM `answers` WHERE ((CASE WHEN q1 = 'D' THEN 1 ELSE 0 END) +
(CASE WHEN q2 = 'B' THEN 1 ELSE 0 END) +
(CASE WHEN q3 = 'D' THEN 1 ELSE 0 END) +
(CASE WHEN q4 = 'A' THEN 1 ELSE 0 END) +
(CASE WHEN q5 = 'B' THEN 1 ELSE 0 END) +
(CASE WHEN q6 = 'C' THEN 1 ELSE 0 END) +
(CASE WHEN q7 = 'D' THEN 1 ELSE 0 END) +
(CASE WHEN q8 = 'B' THEN 1 ELSE 0 END)) >= 5;
但是,如果我們想進一步測試每個答案與表中的其他答案,我們可以使用以下語句:
SELECT *, (SELECT COUNT(answer_sub.idanswers) FROM `answers` answer_sub
WHERE ((CASE WHEN answer_sub.q1 = a.q1 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q2 = a.q2 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q3 = a.q3 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q4 = a.q4 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q5 = a.q5 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q6 = a.q6 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q7 = a.q7 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q8 = a.q8 THEN 1 ELSE 0 END)) >= 5
AND answer_sub.idanswers <> a.idanswers) as matching
FROM `answers` a
WHERE (SELECT COUNT(answer_sub.idanswers) FROM `answers` answer_sub
WHERE ((CASE WHEN answer_sub.q1 = a.q1 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q2 = a.q2 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q3 = a.q3 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q4 = a.q4 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q5 = a.q5 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q6 = a.q6 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q7 = a.q7 THEN 1 ELSE 0 END) +
(CASE WHEN answer_sub.q8 = a.q8 THEN 1 ELSE 0 END)) >= 5
AND answer_sub.idanswers <> a.idanswers) > 0
這正是我所期待的 - 非常感謝。 – karatechops 2012-01-19 02:28:10
因爲FALSE
是0
和TRUE
計數是1
在MySQL:
SELECT COUNT(*)
FROM quiz
WHERE (([email protected]) + ([email protected]) + ([email protected]) + ([email protected])
+ ([email protected]) + ([email protected]) + ([email protected]) + ([email protected])
) >= 5
5個問題同樣相對於什麼樣的基準?這是以每個用戶爲基礎進行彙總的嗎? – Kenaniah 2012-01-18 23:54:19
是的這是每個用戶的基礎上,我假設基準將意味着用戶的答案是什麼。所以如果我回答了B A A A A A C A,這將返回2,因爲數據庫中已經有兩行,5個答案類似。 – karatechops 2012-01-19 00:26:04
我不知道你想要得到什麼結果,因爲你的解釋都是一樣的,與你的數據沒有任何關係。你能否編輯你的問題,並演示你如何計算你在上次評論中描述的結果?我沒有看到任何方式'3'會是結果。 – 2012-01-19 00:28:32