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

Posted

技术标签:

【中文标题】如何根据学院名称显示学生人数和显示每个学院的学生总数【英文标题】:How to show number of students according to college name and display total number of students of each college 【发布时间】:2018-08-13 02:22:46 【问题描述】:

餐桌学院:

块引用

create table college
(
    clg_code number(3) primary key,
    clg_name varchar(20)
);      

表 stud_detail

块引用

create table stud_detail
(
    stud_no number(3) primary key,
    name varchar(10),
    dob date,
    clg_code references college
);

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

块引用

set serveroutput on;

声明 cursor c_stud 是 select stud_no,name,clg_name from stud_detail s,college c where 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;
/

大学表中的值

块引用

insert into college values (101,'Sahjanand');
insert into college values (102,'Gurukul');
insert into college values (103,'K.R.Doshi');

块引用

从大学中选择 *;

stud_detail 中的值

块引用

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);

块引用

从 stud_detail 中选择 *;

触发 stud_detail 的主键生成。

块引用

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; /

【问题讨论】:

【参考方案1】:

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

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;
/

附言你真的应该使用主键序列而不是触发器。

【讨论】:

我是否必须制作另一个光标并将此 select 语句放入其中? @JaicyJoseph - 你不需要游标来运行 select 语句,你可以按原样运行它。您想在哪里显示这些数据? declare cursor c_stud is select stud_no,name,clg_name from stud_detail s,college c where s.clg_code=c.clg_code; v_stud c_stud%rowtype;在 c_stud 循环中为 v_stud 开始 dbms_output.put_line(v_stud.stud_no||' '||v_stud.name||' '||v_stud.clg_name);结束循环; //这里我需要做到这一点; / 显示非单组群功能的错误 @JaicyJoseph - 更新了答案。添加group by子句并修复JOIN子句中的别名

以上是关于如何根据学院名称显示学生人数和显示每个学院的学生总数的主要内容,如果未能解决你的问题,请参考以下文章

关于学生信息管理的C语言编程问题求救(一定要是C语言编程,谢谢)

山东青年政治学院学生工作管理信息系统的设计与实现--文献随笔(十五)

昆明医科大学海源学院辅导员工作管理信息系统的研究与分析--文献随笔

闽江学院软件学院2015级学生职业人物访谈--

麻省理工学院是如何培养计算机学生的

请问应该使用啥方法开发学生信息管理系统?为啥? 如果商学院需要开发—套