@ukoHka
Всего понемногу

Как вставить данные в таблицу при совпадении с другой таблицей?

Имеются таблицы grades, students, subjects, teachers, groups, tsg( teachers subjects groups)
Как составить запрос, чтобы в grades оценка ставилась только если текущий преподаватель преподает выбранному учащемуся выбранный предмет? В tsg хранится информация по преподавателям, предметам и группам. В students указывается группа для каждого учащегося.
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
@dmitryKovalskiy
программист средней руки
Вы конечно можете выполнить подобный скриптик
insert into grades (studentId,subjectId,grade)
select @studentId,@subjectId,@grade 
from tsg
inner join groups as g on g.id = tsg.groupId
inner join students as s on g.id = s.groupId
where tsg.teacherId = @teacherId AND s.studentId = @studentId and tsg.subjectId = @subjectId

но лучше просто на уровне интерфейса приложения выдавать преподавателю только те данные, с какими он имеет право работать. Дополнительно обвешивать логикой скрипты вставки не стоит - скрипт будет работать неоправданно медленнее
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@inDeepCode
копать в сторону triggers
Ответ написан
@mletov
Какая структура Grades? Что-то типа studentId, subjectId, grade?

Этот вопрос вообще нужно решать не на уровне БД, а на уровне пользовательского интерфейса.
Преподаватель в своей админке должен видеть только те группы студентов, которым он преподает, и иметь возможность ставить им оценки только по тем предметам, которые он ведет.

Т е какая-то дополнительная валидация в целях безопасности на сервере лишней не будет, но именно, что "дополнительная".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы