MS Access SQL语句

时间:2011-10-05 22:30:34

标签: sql ms-access-2007

就是这种情况,我作为当地学区的网络开发人员工作,我的前任建立了一个自定义应用程序来跟踪孩子的考试成绩。我不是sql专家,所以我顺从主人!

我在MS Access中内置了以下表格:

  • 评估 - 这是技能表的总体类别(即数学,阅读等)
  • 技能 - 这些是单独的测试,按评估ID进行分类
  • 掌握 - 学生成绩;目前显示技能ID

下面,我的桌子就像他们现在一样。最后一张表是我想要的。


评估表

asstID      asstName
1           Math
2           Reading
3           Literature

技能表

skillID     skillName   asstID
80          Vocabulary  3
81          Addition    1
82          Grammar     2

掌握表

masteryID   stuID       score       skillID
20          st001       89          82
21          st001       96          81
22          st001       100         80
23          st002       88          81
24          st002       74          80
25          st002       99          82

掌握表 - 我想要的

masteryID   stuID       score       skillID     asstID
20          st001       89          82          2
21          st001       96          81          1
22          st001       100         80          3
23          st002       88          81          1
24          st002       74          80          3
25          st002       99          82          2

基本上,我有几千名学生需要将asstID添加到掌握表中。

我正在寻找帮助创建一个SQL语句我可以放入MS Access,它将显示与当前表中的skillID相对应的asstID。

任何帮助表示赞赏。

请不要问为什么我们使用MS Access,这就是他在构建应用程序时所使用的

3 个答案:

答案 0 :(得分:2)

SELECT Mastery.masteryID, Mastery.stuID, Mastery.score, Mastery.skillID, Skills.asstID
FROM Mastery 
    INNER JOIN Skills 
        ON Mastery.skillID = Skills.skillID;

在查询设计器(QBE或按示例查询)网格中,您将添加Mastery表和Skills表,并确保Mastery.SkillIDSkills.SkillID之间存在关系线。< / p>

答案 1 :(得分:0)

怎么样:

SELECT mastery_table.masteryID, 
       mastery_table.stuID, 
       mastery_table.score, 
       mastery_table.skillID, 
       skills_table.asstID
  FROM mastery_table, skills_table
 WHERE mastery_table.skillID=skills_table.skillID

答案 2 :(得分:0)

这是我最终用于更新我的4k +行的内容。在运行之前,我在数据库中创建了一个名为asstID的新列。

说明:   - 循环通过tblMastery&amp;从每一行获取tblMastery.skillID的值   - 连接到tblSkills&amp;获取tblSkills.asstID的值,其中tblSkills.skillID与tblMastery.skillID匹配   - 使用tblSkills.asstID的匹配值更新tblMastery.asstID

希望这有助于某人。 :)

<%

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open "C:/database.mdb" 

set rs=Server.CreateObject("ADODB.Recordset")
rs.open "SELECT tblMastery.Skill FROM tblMastery;", conn

  do until rs.eof
    skillID = rs.fields("Skill")

set rs1=Server.CreateObject("ADODB.Recordset")
rs1.open "SELECT SkillID, Assesment FROM tblSkills WHERE SkillID='" & skillID & "';", conn

  asstID = rs1.fields("Assesment")

  sql = "UPDATE tblMastery SET asstID='" & asstID & "' WHERE Skill='" & skillID & "';"
  on error resume next
  conn.Execute(sql)

rs.movenext
loop

%>