Join 如何根据学院名称显示学生人数,并显示每个学院的学生总数

Join 如何根据学院名称显示学生人数,并显示每个学院的学生总数,join,plsql,triggers,plsqldeveloper,cursors,Join,Plsql,Triggers,Plsqldeveloper,Cursors,表学院: 大宗报价 表3.1.1-1详细信息 大宗报价 我试过这个触发器,现在必须计算每个学院的学生总数 大宗报价 申报 光标c_stud是从stud_detail s,college c中选择stud_no,name,clg_name,其中s.clg_code=c.clg_code v_stud c_stud%rowtype; begin for v_stud in c_stud loop dbms_output.put_line(v_stud

表学院:

大宗报价

表3.1.1-1详细信息

大宗报价

我试过这个触发器,现在必须计算每个学院的学生总数

大宗报价

申报 光标c_stud是从stud_detail s,college c中选择stud_no,name,clg_name,其中s.clg_code=c.clg_code

    v_stud c_stud%rowtype;

begin
    for v_stud in c_stud
    loop
            dbms_output.put_line(v_stud.stud_no||' '||v_stud.name||' '||v_stud.clg_name);

    end loop;
end;
/
大学表中的价值观

大宗报价

大宗报价

从学院中选择*

详细信息中的值

大宗报价

大宗报价

从螺柱详图中选择*

用于生成stud_详细信息的主键的触发器

大宗报价


我猜,你只需要一个简单的
计数

SQL查询-

select clg_name, count(stud_no) count_of_studens
  from college c
  join stud_detail s
    on s.clg_code = c.clg_code
group by clg_name;
在匿名区块中-

declare

cursor stud_record is 
select clg_name, count(stud_no) count_of_studens
  from college c
  join stud_detail s
    on s.clg_code = c.clg_code
group by clg_name;
BEGIN
   for records in stud_record
   loop
       dbms_output.put_line('College Name - ' || records.cld_name);
       dbms_output.put_line('Number of Students - ' || records.count_of_students);
   END FOR;

END;
/

p、 您真的应该使用主键序列而不是触发器

我是否需要制作另一个游标并将此select语句放入其中?@JaicyJoseph-运行select语句不需要游标,您可以按原样运行它。您希望在何处显示此数据?声明光标c_stud为从stud_detail s中选择stud_no、name、clg_name,其中s.clg_code=c.clg_code;v_螺柱c_螺柱%rowtype;在c|u stud循环dbms|u输出中开始v|u stud。put|u行(v|stud.stud|no | | | | v| u stud.clg|u name);端环//在这里,我需要做到这一点/它显示了一个错误,而不是一组function@JaicyJoseph-更新了答案。添加了
groupby
子句,并修复了
JOIN
子句中的别名
    v_stud c_stud%rowtype;

begin
    for v_stud in c_stud
    loop
            dbms_output.put_line(v_stud.stud_no||' '||v_stud.name||' '||v_stud.clg_name);

    end loop;
end;
/
insert into college values (101,'Sahjanand');
insert into college values (102,'Gurukul');
insert into college values (103,'K.R.Doshi');
insert into stud_detail (name,dob,clg_code)values('abc','12-mar-1998',101); 
insert into stud_detail (name,dob,clg_code)values('adsfbc','22-jan-1999',101);  
insert into stud_detail (name,dob,clg_code)values('ac','13-feb-1995',101);  
insert into stud_detail (name,dob,clg_code)values('ddbc','02-mar-1998',101);    
insert into stud_detail (name,dob,clg_code)values('afdgc','09-sep-1996',101);   
insert into stud_detail (name,dob,clg_code)values('adf','30-jun-1997',101); 
insert into stud_detail (name,dob,clg_code)values('osif','24-mar-1996',101);    

insert into stud_detail (name,dob,clg_code)values('dfif','13-mar-1996',102);    
insert into stud_detail (name,dob,clg_code)values('odffif','26-jan-1993',102);  
insert into stud_detail (name,dob,clg_code)values('fsaf','30-mar-1994',102);    
insert into stud_detail (name,dob,clg_code)values('vvhgf','08-jul-1995',102);   
insert into stud_detail (name,dob,clg_code)values('odgf','19-sep-1997',102);    
insert into stud_detail (name,dob,clg_code)values('dfgfif','12-oct-1998',102);  
insert into stud_detail (name,dob,clg_code)values('dfgdif','24-feb-1996',102);  
insert into stud_detail (name,dob,clg_code)values('sdgfif','21-aug-1998',102);  

insert into stud_detail (name,dob,clg_code)values('jc','22-mar-1994',103);  
insert into stud_detail (name,dob,clg_code)values('charmi','26-dec-1998',103);
insert into stud_detail (name,dob,clg_code)values('ritu','04-dec-1991',103);
insert into stud_detail (name,dob,clg_code)values('ridddhi','26-may-1998',103);
insert into stud_detail (name,dob,clg_code)values('khushbu','11-jul-1998',103);
insert into stud_detail (name,dob,clg_code)values('vaishali','23-feb-1999',103);
create or replace trigger tristud before insert on stud_detail for each row declare     pkey number(5); begin   select max(stud_no)+1 into pkey from stud_detail;   if (pkey is null) then      :new.stud_no:=1;    else        :new.stud_no:=pkey;     end if; end; /
select clg_name, count(stud_no) count_of_studens
  from college c
  join stud_detail s
    on s.clg_code = c.clg_code
group by clg_name;
declare

cursor stud_record is 
select clg_name, count(stud_no) count_of_studens
  from college c
  join stud_detail s
    on s.clg_code = c.clg_code
group by clg_name;
BEGIN
   for records in stud_record
   loop
       dbms_output.put_line('College Name - ' || records.cld_name);
       dbms_output.put_line('Number of Students - ' || records.count_of_students);
   END FOR;

END;
/