我对以下内容感到有些失落。所以我有两张桌子。
表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);
但我不知道怎么做,所以我在一张桌子和同一排的两个科目上得分。
答案 0 :(得分: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别名说,使用相同的表,但显示化学分数符合标准的行......
答案 1 :(得分:0)
您还可以考虑删除表2,而是使用带有表1查询的case语句。