[英]Need some solution for result of my mysql table result in 2 condition
我有這樣的桌子
table_name : AnswerDetail
|id_session|id_question|value|
------------------------------
|1 |1 |4 |
|1 |2 |4 |
|1 |3 |4 |
|1 |4 |2 |
|1 |1 |3 |
|1 |2 |2 |
|1 |3 |1 |
|1 |4 |4 |
|2 |1 |3 |
|2 |2 |2 |
|2 |3 |2 |
|3 |1 |4 |
我需要在這里通過 2 個條件顯示一些結果,
$query = $this->db->query("SELECT a.id_session, a.id_question,
(SELECT COUNT(*) FROM AnswerDetail WHERE id_session=1 AND value=4 AND id_question=1) AS great,
(SELECT COUNT(*) FROM AnswerDetail WHERE id_session=1 AND value=3 AND id_question=1) AS good"),
(SELECT COUNT(*) FROM AnswerDetail WHERE id_session=1 AND value=2 AND id_question=1) AS not bad
FROM (SELECT DISTINCT id_session,id_question FROM AnswerDetail) a WHERE id_session=1);
我需要在這里做的是,我將id_session
按 ID 從 URL SEGMENT (它可以),但通過從 foreach id_question
循環的數組中輸入 id_question。
那就是查詢僅由id_question=1
顯示,我如何id_question by [1,2,3,4]
結果
我所期望的實際上是這樣的
|id_session|id_question|great|good|not bad|
-------------------------------------------
|1 |1 |1 |1 |0 |
|1 |2 |1 |0 |1 |
|1 |3 |1 |0 |0 |
|1 |4 |1 |0 |1 |
任何解決方案? 或者我應該改變什么?
您可以使用sum()
而不是count()
然后按session
和question
ID 分組。
select id_session, id_question, sum(case when value = 4 then 1 else 0 end) as great,
sum(case when value = 3 then 1 else 0 end) as good,
sum(case when value = 2 then 1 else 0 end) as notbad
from AnswerDetail
where id_session = 1
group by id_session, id_question
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.