【发布时间】:2009-07-07 15:05:41
【问题描述】:
我有两张桌子:
主题 身份主体 用户名 主题
等级 ID等级 身份主体 等级
SUBJECTS.IDsubjects 和 GRADES.IDsubject 连接在一起形成一个关系数据库。我想根据用户的主题插入成绩,但我不知道该怎么做。
我有三个价值观: - 用户名 - 学科 - 等级
我想根据一个科目在 GRADES 表中插入一个成绩,因为会有很多科目,我希望将一个具体的成绩应用于一个具体的科目。
【问题讨论】:
我有两张桌子:
主题 身份主体 用户名 主题
等级 ID等级 身份主体 等级
SUBJECTS.IDsubjects 和 GRADES.IDsubject 连接在一起形成一个关系数据库。我想根据用户的主题插入成绩,但我不知道该怎么做。
我有三个价值观: - 用户名 - 学科 - 等级
我想根据一个科目在 GRADES 表中插入一个成绩,因为会有很多科目,我希望将一个具体的成绩应用于一个具体的科目。
【问题讨论】:
INSERT INTO GRADES (IDSUBJECT, GRADE)
(
(SELECT SubjID
FROM SUBJECTS
WHERE USERNAME = [username]
AND SUBJECT = [subject]),
[grade]
)
请注意,您没有主题 ID 而只有主题名称是否有原因?另外,您真的希望用户名是科目表中的字段而不是成绩表中的字段吗?
【讨论】:
UPDATE Grades SET grade='F' WHERE subject IN(SELECT subject FROM stackoverflow)
【讨论】:
我假设您的 GRADES.IDgrades 是一个 auto_increment 键,并且会自动生成。此外,在SELECT 语句中,值“A”是您放置实际成绩值的位置。它实际上并没有从 SUBJECTS 表中选择它,而只是选择了指定的显式值。我还分别使用了“数学”和“比利”作为成绩和科目的值。
INSERT into GRADES (IDsubject, grade)
SELECT IDsubjects, 'A'
FROM SUBJECTS
WHERE username = 'billy'
AND subject = 'math'
这将在 GRADES 中插入一个新行,其中 IDsubjects 是从 IDsubjects 表中选择的。
【讨论】:
假设IDGrades是自动生成的ID,
INSERT INTO GRADES (IDSubject, GRADE)
SELECT s.IDsubjects,
@GRADE
FROM SUBJECTS s
WHERE s.USERNAME = @USERNAME
AND s.[SUBJECT] = @SUBJECT
带有多个 ID 列的非常奇怪的命名约定 (IDSubjects)
【讨论】: