两个表联合分页查询的SQL语句,多谢

两个表联合分页查询的SQL语句,谢谢!
学生 A表: pid,name
课程 B表:pid,class,parentclass
学生会上很比较多的课程class(语文、数学),但学生对class又报了parentclass(譬如基础班、考前班),这样,pid和parentclass就会出现一对多。譬如肖明报了语文的基础班,又报了数学的基础班,如果按照parentclass基础班来进行查询学生的话,就会出现两条肖明的数据。
pid      class    parentclass
肖明        语文      基础班
肖明       数学       基础班
 
请教这种情况如何按照parentclass为条件进行分页查询并得出去掉学生重复值的count数。谢谢。

分不多了,谢谢!
------解决思路----------------------
能点第五页,那么你最开始取过总页数了。
不如改成这样:
1)把有序的pid插入有自增行号的临时表
2)从临时表中统计每也的最小、最大pid返回

所有的分页查询都可以统一成下面这样
select top 10 a.pid,a.name --top 10 其实不需要了
from A表 a 
left join B表 b ON a.pid=b.pid 
where b.parentclass='基础班' 
and a.pid BETWEEN @页内最小pid AND @页内最大pid
group by a.pid,a.name 
order by a.pid desc

------解决思路----------------------
引用:
Quote: 引用:

去重字段加个MAX就好 了,count(*)就是求总数,只有一个结果不需要distinct 


因为是两个表left join 所有有重复的行的。

select #A.PID,#A.NAME,PARENTCLASS,MAX(CLASS) CLASS from #A JOIN #B on #A.PID=#B.PID
GROUP BY #A.PID,#A.NAME,PARENTCLASS