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 рандомных по каждому студенту, который принадлежит данной группе и по дисциплине, которая указана.

Вообщем нагородил и не справлюсь.

Запутался, как написать запрос на генерацию. Подскажите пожалуйста.
Спасибо
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Такую логику проще в приложении описать. Получить массив id нужных вопросов, сделать шаффл, взять первые 100. Можно сделать ORDER BY RAND() LIMIT 100, но это крайне медленный запрос.
Ответ написан
Комментировать
@TwoRS Автор вопроса
$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);
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы