create table class01(
classno number(4),
classname varchar2(8)
);
select * from class01;
insert into class01 values (101,'甲班');
insert into class01 values (102,'乙班');
commit;
create table student01(
sno number(6),
sname varchar2(6),
score number(3),
classno number(4)
);
insert into student01 values (1001,'张三',77,101);
insert into student01 values (1002,'李四',55,102);
insert into student01 values (1003,'王五',99,101);
create table score01(
minscore number(2),
maxscore number(3),
level01 varchar2(3)
);
alter table score01 modify(level01 varchar2(10));
select * from score01;
insert into score01 values(0,60,'不及格');
insert into score01 values(60,70,'及格');
insert into score01 values(70,80,'良');
insert into score01 values(80,100,'优');问题1:E-R关系设计
问题2:查询出张三的score在表level01中的级别

解决方案 »

  1.   

    1,三个实体,学生,班级,分数等级,分别通过班级ID和分数进行关联
    2,通过张三选出的分数在分数等级范围内,类似分数>字段 1 and分数<字段2,也可以可以写成一句,建议分开写,先把分数赋值变量,再查分数等级,减少子查询,sql语句写的越简单对性能越好
      

  2.   


    select level01 from score01
    where (select score from student01 where sname='张三')>minscore 
    and (select score from student01 where sname='张三')<maxscore;大神,sql语句应该怎么写呢?实在不会呢,求大神教我!
      

  3.   

    select level01
      from score01
     where (select score from student01 where sname = '张三') between minscore and
           maxscore
      

  4.   


    亲,你是在数据库里写的吗?
    我试了,不对!
    select level01 from score01,student01
    where (student01.score>minscore and student01.score<maxscore)
    and student01.sname='张三';
    这个能查出来,可是结果是两条记录!谁能优化一下!
      

  5.   


    亲,你是在数据库里写的吗?
    我试了,不对!
    select level01 from score01,student01
    where (student01.score>minscore and student01.score<maxscore)
    and student01.sname='张三';
    这个能查出来,可是结果是两条记录!谁能优化一下!
    我执行了下,查询只有一条数据:良
      

  6.   

    select level01 from score01,student01
    where student01.score>=minscore and student01.score<maxscore
    and student01.sname='张三';
      

  7.   


    亲,你是在数据库里写的吗?
    我试了,不对!
    select level01 from score01,student01
    where (student01.score>minscore and student01.score<maxscore)
    and student01.sname='张三';
    这个能查出来,可是结果是两条记录!谁能优化一下!
    我执行了下,查询只有一条数据:良如图,我查的是两条
    不过,可以在level01前加distinct,返回结果就是一条
      

  8.   

    select 
    (select sc.level01   from score01 sc where sc.minscore <= score  and sc.maxscore > score ) 
    from class01 c1,student01 s1  where c1.classno = s1.classno  and s1.sname = '张三' ;
      

  9.   

    select 
    (select sc.level01   from score01 sc where sc.minscore <= s1.score  and sc.maxscore > s1.score ) 
    from class01 c1,student01 s1  where c1.classno = s1.classno  and s1.sname = '张三' ;给点分吧,赚点分部容易!