MS Access SQL оператор - PullRequest
       8

MS Access SQL оператор

1 голос
/ 06 октября 2011

вот ситуация, я работаю веб-разработчиком в местном школьном округе, и мой предшественник создал специальное приложение для отслеживания результатов тестов детей. Я не эксперт по SQL, поэтому я откладываю на мастеров!

У меня есть следующие таблицы, встроенные в MS Access:

  • Оценка - это всеобъемлющая категория для таблицы навыков (т. Е. Математика, чтение и т. Д.)
  • Навыки - это отдельные тесты, классифицируемые по идентификатору оценки
  • Мастерство - баллы студентов; в настоящее время отображает идентификатор навыка

Ниже приведены мои таблицы такими, какие они есть сейчас. Самая последняя таблица - это то, что я хотел бы иметь.


Таблица оценки

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, который будет отображать asstID, который соответствует skillID в текущей таблице.

ЛЮБОЙ помощь приветствуется.

Пожалуйста, не спрашивайте, почему мы используем MS Access, это именно то, что он использовал, когда создавал приложение

Ответы [ 3 ]

2 голосов
/ 06 октября 2011
SELECT Mastery.masteryID, Mastery.stuID, Mastery.score, Mastery.skillID, Skills.asstID
FROM Mastery 
    INNER JOIN Skills 
        ON Mastery.skillID = Skills.skillID;

В сетке конструктора запросов (QBE или Query-By-Example) вы добавили бы таблицу Мастерства и таблицу Навыков и убедились, что между Mastery.SkillID и Skills.SkillID.

существует линия взаимосвязи.
0 голосов
/ 07 октября 2011

Это то, что я использовал для обновления моих строк 4k +. Перед этим я создал новый столбец в самой БД с именем asstID.

Пояснение: - перебрать tblMastery и получить значение tblMastery.skillID из каждой строки - подключиться к tblSkills и получить значение tblSkills.asstID, где tblSkills.skillID совпадает с tblMastery.skillID - обновите tblMastery.asstID, указав соответствующее значение из tblSkills.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

%>
0 голосов
/ 06 октября 2011

Как насчет:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...