首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不匹配则返回零的Mysql计数

如果不匹配则返回零的Mysql计数
EN

Stack Overflow用户
提问于 2013-01-15 20:14:52
回答 3查看 1.6K关注 0票数 0

我在一个数组中有一组大约9000个导师i,我将它们放在一个字符串中,如下所示:

代码语言:javascript
复制
(1,2, 3, 4,5,6,7,....9000,9001,9002)

这样我就可以在下面的查询中使用它们:

代码语言:javascript
复制
select count(student_assignment.assignment_id) as total_assignment from 
student_assignment, assigned_tutor_fk where  assignment_status = 'closed'
 and assigned_tutor_fk in (1,2, 3, 4,5,6,7,..100,101,103...9000,9001,9002)
 group by assigned tutor_fk.

我想要计算与每个辅导员( assigned_tutor_fk )相关的总行数,以及那些没有分配的辅导员(即那些在表中没有分配记录的辅导员),我希望将它们的分配计数显示为0,并且我只希望我的查询返回count和assigned_tutor_fk我的表结构是:

代码语言:javascript
复制
    assignment_id | assigned_tutor_fk | assignment_date | student_id |
    |    1        |   2               |  22-01-2011     |  4         |
    |    2        |   3               |  14-03-2011     |  5         |

我试着让我的输出是这样的:

代码语言:javascript
复制
    |total_assignment | assigned_tutor_fk |
    |      5          | 4                 |
    |      2          | 7                 |
    |      0          | 8                 |

更新:我想我不能正确地表达自己,我已经有了一个根据另一个标准过滤的导师列表,合并这两个查询是非常复杂的,所以现在我有了一组导师id,我希望总和显示为零,以防导师没有作业记录。请帮帮我,因为我现在不知道该怎么办

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-15 20:22:23

代码语言:javascript
复制
SELECT  t.id, COUNT(sa.assignment_id)
FROM    tutor t
LEFT JOIN
        student_assignement sa
ON      sa.assignment_tutor_fk = t.id
WHERE   t.id IN (1, 2, ..., 9002)
GROUP BY
        t.id
票数 2
EN

Stack Overflow用户

发布于 2013-01-15 20:18:46

代码语言:javascript
复制
SELECT 
  count(*) as total_assignment,
  assigned_tutor_fk  
FROM assignmentTable 
GROUP BY assigned_tutor_fk 
票数 0
EN

Stack Overflow用户

发布于 2013-01-15 20:26:59

不要把家教放在一根线上。从表中选择它们,并与assignment和FK表进行左连接。在不了解所有表的情况下,我猜它应该是这样的:

代码语言:javascript
复制
select 
   t.tutorId,
   count(sa.assignment_id) as total_assignment
from 
   tutor t
LEFT JOIN
   assigned_tutor_fk fk
ON
   fk.assigned_tutor_fk = tutor.tutorId 
LEFT JOIN
   student_assignment sa
ON
  fk.assignment_id = sa.id
where  
   sa.assignment_status = 'closed' OR
   ISNULL(sa.assignment_status) -- if join fails.
group by 
   t.tutorId

Left Join从辅导表中检索所有值,如果存在匹配,则将其与连接表合并。如果不是,则插入NULL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14337514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档