表一: users 编号  姓名   语文  数学  英语 
1    xwushi   60    70    50 
2    swushi   90   100    30 表二:grade 
编号  得分    评价 
1      10     极差 
2      20     极差 
3      30     很差 
4      40     很差 
5      50     差 
6      60     及格 
7      70     一般 
8      80     良 
9      90     好 
10     100    优 要用一条select查询最终显示出下面的结果 编号  姓名   语文  数学  英语 
1    xwushi  极格  一般   差 
2    swushi   好    优   极差 请问,这个语句怎么写呀?我怎么也想不出来,我是新手,那位高手帮忙一下:D 

解决方案 »

  1.   

    create table tbl1(id int identity(1,1),cname nvarchar(10),Chinese int,math int,english int)
    insert into tbl1 select 'xwushi',60,70,50
          union all select 'swushi',90,100,30create table tbl2(id int identity(1,1),score int,grade nvarchar(10))
    insert into tbl2 select 10,N'极差'
          union all  select 20,N'极差'
          union all  select 30,N'很差'
          union all  select 40,N'很差'
          union all  select 50,N'差'
          union all  select 60,N'及格'
          union all  select 70,N'一般'
          union all  select 80,N'良'
          union all  select 90,N'好'
          union all  select 100,N'优'select tbl1.id,tbl1.cname,a.grade,b.grade,c.grade from tbl1
    inner join tbl2 a on tbl1.chinese=a.score
    inner join tbl2 b on tbl1.math=b.score
    inner join tbl2 c on tbl1.english=c.score
    order by tbl1.iddrop table tbl1,tbl2
    -------------------------------
    1 xwushi 及格 一般 差
    2 swushi 好 优 很差
      

  2.   

    好象可以,我的写法是select users.编号,users.姓名,a.评价 as 语文,b.评价 as 数学,c.评价 as 英文 from users
    inner join grade a on a.得分=users.语文
    inner join grade b on b.得分=users.数学
    inner join grade c on c.得分=users.英文就可以得出上面的结果但是我想再深入一下,如果有下面的这行数据,能不能也同时显示出来编号 姓名 语文 数学 英文
    3    bbjo  25   35   65因为她的成绩数不在grade表中,希望能够正常显示她的得分,看能有没有办法解决?