如何使用成绩,学生表获得学生成绩

时间:2010-07-08 09:32:59

标签: sql

如何使用这两张表获得学生成绩?

CREATE TABLE [dbo].[Grade](
 [ID] [int] NULL,
 [From] [int] NULL,
 [To] [int] NULL,
 [Grade] [nvarchar](50) NULL
) ON [PRIMARY]

创建表[dbo]。[学生](     [ID] [int] NULL,     [名称] nvarchar NULL,     [得分] [int] NULL )[主要]

1 个答案:

答案 0 :(得分:2)

好的,我们猜一下,Students表有一个名为'ID'的列(可能是一个标识列),这是学生的唯一标识符。 我们还假设Grade.ID字段是Student表的外键引用(我知道它没有说明,但它可能是一个好主意。)

在这种情况下,试试这个(未经测试的代码):

SELECT Student.Name, Grade.Grade, Grade.From, Grade.To
FROM Student, Grade
WHERE Student.ID = Grade.ID
ORDER BY Student.ID, Grade.To

那应该给你一份学生名单,他们的成绩按照ID顺序排列。 它会重复每个成绩记录的学生姓名(当然,假设没有空值。)

如果你想要一个具有成绩列表的学生实例,那就更难了。

(顺便说一句,初始问题中的信息越多越好,你可能得到的答案就越好。)


好的 - 第二次拍摄,现在我理解了桌面结构:

SELECT Students.Name,  (select Grades.GradeName from Grades where Students.Score <= Grades.ScoreTo AND Students.Score > Grades.ScoreFrom) AS Grade
FROM Students

我更改了一些名称以使它们更加明显和不同(对于一个表和该表上的字段具有相同的名称令人困惑。)

这应该可以为您提供所需的结果。 但是 - 您必须确保您的数据是干净的 - 如果您有重叠的范围,您将获得多个子查询返回(这将失败。)您可以通过'SELECT TOP 1'限制来克服这个问题,但它很麻烦。< / p>