2012-12-01 138 views
0

我有两个表。嵌套sql查询找到计数

  1. 学生表的数据为rollno,batchids。
  2. 批处理表,批处理,courseid。

学生表的batchids列包含逗号分隔的各种课程的学生可能在被登记batchids。现在,我希望得到学生的数量coursewise。有人能帮我吗?

到目前为止,我已经达到

select * 
from students 
where batchids in (select id from batches where courseid=1) 

这给我的学生在过程中与ID列表“1”。

+3

学生表中逗号分隔的batchids列表,这使复杂的事情变得复杂。 courseid = 1的相关性是什么? – Brettski

+1

您正在使用哪种RDBMS - SQLServer,MySQL ....? – codingbiz

+0

在继续之前,您应该修复您的数据模型。 “*逗号分隔列表*”是一个非常糟糕的主意。 –

回答

0

使用count()。

Select count(*) 
from students 
where batchids in (select id from batches where courseid=1) 
0

如果我正确理解你的数据,你有这样的:

学生:(S1, '1,2,3')

batchids:( '1,2,3' ,1),('1,2,3',2),'1,2,3',3)

假设这是正确的,逗号分隔列表只是进入batchids表的一个键。因此,要获得每个课程的计数,请执行以下操作:

select courseid, count(*) 
from batches b join 
    students s 
    on b.studentid = s.studentid 
group by courseid