计数其他表中的值

丙氨酸单抗

我有两个表=subjectsstats

  -- subjects --             
------------------          
|  id  | name    |          
------------------         
|  1  |  subjecta |        
|  2  |  subjectb |       
|  3  |  subjectc |         
|  4  |  subjectd |         
|  5  |  subjecte |        
|  6  |  subjectf |        
|  7  |  subjectg |      
|  8  |  subjecth |         
|  9  |  subjecte |       
| ... |  subjectf |       
------------------       

-- stats --
-----------------------------------
| user_id | subject_id | correct  |
-----------------------------------
|  1      |    1      |   false  |
|  1      |    1      |   false  | 
|  1      |    2      |   false  |
|  4      |    3      |   false  |
|  4      |    4      |   false  |
|  4      |    5      |   false  |
|  2      |    1      |    true  |
|  2      |    1      |    true  |
|  2      |    2      |    false |
|  2      |    2      |    true  |
|  2      |    3      |    false |
---------------------------------

我需要的东西,例如赠予user_id(如2),以获取所有主题(从主题表中),而他所做的主题(从统计信息中),则正确正确/错误计数如下:

--------------------------------------------------
|  id  | name     |  correct true | correct false|
----------------------------------|----------------  
|  1  |  subjecta |       2       |       0      |
|  2  |  subjectb |       1       |       1      |  
|  3  |  subjectc |       0       |       1      |  
|  4  |  subjectd |       0       |       0      | 
|  5  |  subjecte |       0       |       0      | 
|  6  |  subjectf |       0       |       0      | 
|  7  |  subjectg |       0       |       0      | 
|  8  |  subjecth |       0       |       0      | 
|  9  |  subjecte |       0       |       0      | 
| ... |  subjectf |       0       |       0      | 
----------------------------------|--------------|

我不知道该怎么做。

蒂姆·比格莱森(Tim Biegeleisen)

您可以通过两个表之间的联接以及一些条件汇总来计算正确答案和错误答案的数量来完成此操作。

SELECT
    t1.id,
    t1.name,
    SUM(CASE WHEN t2.correct = 'true'  THEN 1 ELSE 0 END) AS correct_true,
    SUM(CASE WHEN t2.correct = 'false' THEN 1 ELSE 0 END) AS correct_false
FROM subjects t1
LEFT JOIN stats t2
    ON t1.id = t2.subject_id AND
       t2.user_id = 2
GROUP BY t1.id, t1.name

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章