SQL запрос на вставку рандомных данных из других таблиц?
Добрый день.
Есть таблица вопросов Questions(id,Vopros,DisciplinaId....), таблица экзаменов Exams(id,...,DisciplinaId,CountQuestions), пользователей Users (id,....,GroupId) с указанием группы, к которой принадлежит студент
и успеваемости Uspevaemost (UserId,EkzamenId,VoprosId, [Otvet] )
Алгоритм такой-
1)добавление данных в таблицу экзаменов Exams- 100 вопросов (CountQuestions) по дисциплине (DisciplinaId) для группы (GroupId).
2)Взять id студентов из GroupId
3)Взять id вопросов из DisciplinaId
4)Сгенерировать данные и занести в таблицу Uspevaemost
order by rand() с указанием limit 100 (CountQuestions)
т.е. нужно не все вопросы записать, а только 100 рандомных по каждому студенту, который принадлежит данной группе и по дисциплине, которая указана.
Вообщем нагородил и не справлюсь.
Запутался, как написать запрос на генерацию. Подскажите пожалуйста.
Спасибо
Для правильного вопроса надо знать половину ответа
Такую логику проще в приложении описать. Получить массив id нужных вопросов, сделать шаффл, взять первые 100. Можно сделать ORDER BY RAND() LIMIT 100, но это крайне медленный запрос.
$id_ekzamena=$_GET["id_ekzamena"]; //ЭКЗАМЕН
$count_voprosov=$_GET["limit"]; //Количество вопросов
$id_group=$_GET["id_group"]; //Какой группе студентов добаляем тесты- вернёт айдишники студентов в группе
$viborka_studentov =$this->Vipolnit_Zapros("SELECT idstudents as id FROM Studentsingroups WHERE idgroups=".$id_group);
//$count =count($viborka_studentov);
foreach ($viborka_studentov as $element) {
$this->Vipolnit_Zapros("INSERT INTO uspevaemostekzameni (IdVoprosa,IdEkzamena,IdUser)
SELECT vopros.id as IdVoprosa,'".$id_ekzamena."' AS IdEkzamena,".$element['id']." AS IdUser FROM vopros ORDER BY RAND() LIMIT ".$count_voprosov);
}