-1

我对以下内容有点迷茫。所以我有两张桌子。

表1(包含学生成绩)

Students  English  Chemistry
Jack        3         2
Jane        2         8
Jill        6         1    

表 2(包含评分标准)

 Begin    Finish      Grade
  0          4          C
  5          7          B
  8          10         A

我想要的最终结果是,

  Student     English   Chemistry 
  Jack        C           C
  Jane        B           A
  Jill        B           C

我猜有两个连接,但我不确定如何准确地实现它。我可以为单个列做,这意味着我可以通过以下方式获得一个主题的结果

SELECT table1.Student, table2.Grade FROM table1,table2 WHERE (table1.English>=table2.Begin and table1.English<=table2.Finish);

但是我不知道该怎么做,所以我在一张表和同一行中获得了两个科目的成绩。

4

2 回答 2

0

您还可以考虑消除表 2,而是使用带有查询表 1 的 case 语句。

于 2013-07-11T21:07:08.823 回答
0

尝试这个

select Students.name,
      gc1.Grade as EnglishGrade,
      gc2.grade as ChemistryGrade
from students 
join GradeCriteria gc1 on Students.English between gc1.begin and gc1.finish
join GradeCriteria gc2 on Students.Chemistry between gc2.begin and gc2.finish
order by 1

只有一个 GradeCriteria 表,但是我们需要在查询中引用它两次,所以我们为表名添加了一个别名,以便 SQL 知道您引用的是哪个版本的表。GC1 别名告诉我学生英语分数符合标准的行。GC2 别名说,使用同一张表,但显示化学分数与标准匹配的行...

于 2013-07-11T20:41:52.440 回答