现有两个表,一个是培训班表cls,一个是培训记录表rec
cls的字段:
cls_id,name(培训班名字),type,.....
rec的字段:
id,cls_id,emp_id(学员id)现有如下查询要求,即要查出来
培训班id,培训班名,学员数(count(emp_id)),我用如下查询语句:
select c.cls_id,c.name,count(r.emp_id) from cls c,rec r where c.cls_id=r.cls_id group by c.cls_id;但提示出错,请问这个查询如何写啊?

解决方案 »

  1.   

    select c.cls_id,c.name,count(r.emp_id) from cls c,rec r where c.cls_id=r.cls_id group by c.cls_id,c.name;
      

  2.   

    SELECT A.CLS_ID AS 培训班id,A.NAME AS 培训班名,COUNT(B.EMP_ID) AS 学员数
    FROM CLS A,REC B
    WHERE A.CLS_ID = B.CLS_ID
    GROUP BY A.CLS_ID,A.NAME
      

  3.   

    有没有别的方法? 
    老大,这个。
    其实,我想一起查询出的关于培训班的信息有很多: c.type,c.period,c.date,c.fee......只是在上面的描述中省略了。用这种方法岂不是全要写在group by 中了?
    能不能有别的方法啊?
    谢了!
      

  4.   

    你可以先按班级分组,取出班级id与学员数量,然后再与cls表关联啊
    select 要显示的信息 from cls a, 
    (select c.cls_id,count(r.emp_id) as count from cls c,rec r where c.cls_id=r.cls_id group by c.cls_id) b
      where a.cls_id = b.cls_id
      

  5.   

    select max(c.cls_id),max(c.name),count(r.emp_id) from cls c,rec r where c.cls_id=r.cls_id group by c.cls_id;
      

  6.   

    select cls_id,(select name from cls where rec where cls_id=rec.cls_id) name count(*) from rec group by cls_id//注意给rec.cls_id建立索引