我需要INSERT命令的帮助,两个表

时间:2009-07-07 15:05:42

标签: sql ms-access

我有两张桌子:

SUBJECTS IDsubjects 用户名 受试者

GRADES IDgrades IDsubject 等级

SUBJECTS.IDsubjects和GRADES.IDsubject连接形成关系数据库。我想根据用户的主题插入成绩,但我不知道该怎么做。

我有三个值: - 用户名 - 学科 - 等级

我想根据主题将成绩插入到GRADES表中,因为会有很多科目,我希望将特定成绩应用于特定科目。

4 个答案:

答案 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