我有两张桌子:
SUBJECTS IDsubjects 用户名 受试者
GRADES IDgrades IDsubject 等级
SUBJECTS.IDsubjects和GRADES.IDsubject连接形成关系数据库。我想根据用户的主题插入成绩,但我不知道该怎么做。
我有三个值: - 用户名 - 学科 - 等级
我想根据主题将成绩插入到GRADES表中,因为会有很多科目,我希望将特定成绩应用于特定科目。
答案 0 :(得分:1)
INSERT INTO GRADES (IDSUBJECT, GRADE)
(
(SELECT SubjID
FROM SUBJECTS
WHERE USERNAME = [username]
AND SUBJECT = [subject]),
[grade]
)
请注意,您是否有理由不拥有主题ID但只有主题名称?另外,您真的希望用户名是主题表中的字段而不是成绩表吗?
答案 1 :(得分:1)
我假设您的GRADES.IDgrades是一个auto_increment键,将自动生成。另外,在SELECT
语句中,值'A'是您放置实际成绩值的位置。它实际上并没有从SUBJECTS表中选择它,只需选择指定的显式值即可。我还分别使用'math'和'billy'作为你的成绩和科目的价值。
INSERT into GRADES (IDsubject, grade)
SELECT IDsubjects, 'A'
FROM SUBJECTS
WHERE username = 'billy'
AND subject = 'math'
这将在GRADES中插入一个新行,其IDStject从IDsubjects表中选择。
答案 2 :(得分:1)
UPDATE Grades SET grade='F' WHERE subject IN(SELECT subject FROM stackoverflow)
答案 3 :(得分:0)
假设IDGrades是自动生成的ID,
INSERT INTO GRADES (IDSubject, GRADE)
SELECT s.IDsubjects,
@GRADE
FROM SUBJECTS s
WHERE s.USERNAME = @USERNAME
AND s.[SUBJECT] = @SUBJECT
具有多个ID列的非常奇怪的命名约定(IDSubject s )