我在一个数组中有一组大约9000个导师i,我将它们放在一个字符串中,如下所示:
(1,2, 3, 4,5,6,7,....9000,9001,9002)这样我就可以在下面的查询中使用它们:
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我的表结构是:
assignment_id | assigned_tutor_fk | assignment_date | student_id |
| 1 | 2 | 22-01-2011 | 4 |
| 2 | 3 | 14-03-2011 | 5 |我试着让我的输出是这样的:
|total_assignment | assigned_tutor_fk |
| 5 | 4 |
| 2 | 7 |
| 0 | 8 |更新:我想我不能正确地表达自己,我已经有了一个根据另一个标准过滤的导师列表,合并这两个查询是非常复杂的,所以现在我有了一组导师id,我希望总和显示为零,以防导师没有作业记录。请帮帮我,因为我现在不知道该怎么办
发布于 2013-01-15 20:22:23
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发布于 2013-01-15 20:18:46
SELECT
count(*) as total_assignment,
assigned_tutor_fk
FROM assignmentTable
GROUP BY assigned_tutor_fk 发布于 2013-01-15 20:26:59
不要把家教放在一根线上。从表中选择它们,并与assignment和FK表进行左连接。在不了解所有表的情况下,我猜它应该是这样的:
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.tutorIdLeft Join从辅导表中检索所有值,如果存在匹配,则将其与连接表合并。如果不是,则插入NULL。
https://stackoverflow.com/questions/14337514
复制相似问题