如何使用这两张表获得学生成绩?
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 )[主要]
答案 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>