У меня есть таблицы ниже
class_student_mapping
class_id student_id
1 1
1 2
1 3
1 4
2 1
2 2
student_program_mapping
student_id class_id program_id
1 1 1
2 1 1
Мне нужно назначить программы для учащихся по классам
Я получу идентификатор класса и идентификатор программы, чем мне нужночтобы проверить последнего назначенного студента в student_program_mapping после получения этого студента, я назначу нового студента из таблицы class_student_mapping, у которого student_id больше, чем последний назначенный студент
Для этого я использую ниже sql
SELECT MAX( `student_id` ) as last_assigned_student
FROM `student_program_mapping`
WHERE `class_id` =1
AND `program_id` =1
Что дает мне результат = 2 Теперь я нашел в таблице class_student_mapping идентификатор студента, который просто больше, чем 2
SELECT `student_id`
FROM `class_student_mapping`
WHERE `student_id` > (
SELECT MAX( `student_id` ) AS last_assigned_student
FROM `student_program_mapping`
WHERE `class_id` =1
AND `program_id` =1 ) order by student_id limit 1
Я даю мне идентификатор студента как 3, который является моим желаемым результатом
Но яесть проблема, если я должен сделать это для класса с идентификатором 2, который не имеет никакого сопоставления студенческой программы в таблице сопоставления студенческой программы, чем как получить идентификатор студента в этом случае.
Пожалуйста, помогите мне
Как и в случае с классом 2. Мне нужно впервые добавить студента в таблицу student_program_mapping, поэтому мне требуется самый низкий идентификатор студента, но с этим запросом я не получаю его первымвремя