Olá Pessoal!
Preciso que alguém me ajude com a resolução de um Código SQL para que eu possa buscar na página de participantes de um curso, as notas de cada aluno e através disso fazer alguns cálculos de média.
Bom, já achei o arquivo que lista os usuários do curso - user/index.php. Acredito que a listagem começa a ser feita a partir da linha 366 - versão 1.9.7.
Gostaria também que, se possível, alguém me indicasse alguma referência de SQL, pois ainda não entendo alguns comandos que tenho visualizado no Moodle.
Grato, Cleber Alberto.
Olá, Cleber
existe um relatório de notas chamado "User report", que mostra as notas do usuário em todos os cursos que ele está inscrito. Talvez lá consigas achar as consultas que precisas.
Abraço,
Daniel
existe um relatório de notas chamado "User report", que mostra as notas do usuário em todos os cursos que ele está inscrito. Talvez lá consigas achar as consultas que precisas.
Abraço,
Daniel
Obrigado Daniel pela resposta!
Já tinha dado uma olhada nesta opção, porém, o que realmente eu queria fazer era:
- Através da opção "Participantes" no bloco de administração da disciplina, ser possível acessar as notas dos alunos - mesmo sem nenhum feedback visual - e fazer uma listagem dos alunos que ainda faltam responder algum questionário.
- Através da seleção feita anteriormente, poder enviar uma mensagem de aviso para estes alunos.
Bem Daniel, já achei os arquivos que fazem estas listagem de notas - /grade/lib.php e /grade/report/grader/lib.php - só que ainda não sei como inserir estas opções dentro da página de Participantes.
Grato pela respota,
Cleber Alberto.
cleber.alberto@sereducacional.com
Já tinha dado uma olhada nesta opção, porém, o que realmente eu queria fazer era:
- Através da opção "Participantes" no bloco de administração da disciplina, ser possível acessar as notas dos alunos - mesmo sem nenhum feedback visual - e fazer uma listagem dos alunos que ainda faltam responder algum questionário.
- Através da seleção feita anteriormente, poder enviar uma mensagem de aviso para estes alunos.
Bem Daniel, já achei os arquivos que fazem estas listagem de notas - /grade/lib.php e /grade/report/grader/lib.php - só que ainda não sei como inserir estas opções dentro da página de Participantes.
Grato pela respota,
Cleber Alberto.
cleber.alberto@sereducacional.com
Olá, Cleber
não tenho certeza se a listagem de participantes seja o melhor lugar para fazer isso, mas, de qualquer forma, você tem duas opções:
ou "hackeia" o arquivo moodle/user/index.php
ou utiliza custom scripts: http://docs.moodle.org/en/customscripts
ou talvez seja preferível fazer um bloco/módulo/admin_report para listar isso.
não tenho certeza se a listagem de participantes seja o melhor lugar para fazer isso, mas, de qualquer forma, você tem duas opções:
ou "hackeia" o arquivo moodle/user/index.php
ou utiliza custom scripts: http://docs.moodle.org/en/customscripts
ou talvez seja preferível fazer um bloco/módulo/admin_report para listar isso.
Olá Daniel!
Estou dando uma olhada nos "custom scripts" e acho que realmente essa seria a solução para a minha dúvida.
Estou implementado o moodle para isso, e a qualquer resultado satisfatório eu voltarei a postar.
Grato,
Cleber Alberto.
Estou dando uma olhada nos "custom scripts" e acho que realmente essa seria a solução para a minha dúvida.
Estou implementado o moodle para isso, e a qualquer resultado satisfatório eu voltarei a postar.
Grato,
Cleber Alberto.
Daniel,
Você saberia a escrita de um SQL que pudesse listar quantos questionário há no curso e quantos o aluno respondeu?
Você saberia a escrita de um SQL que pudesse listar quantos questionário há no curso e quantos o aluno respondeu?
Olá, Cleber
não sei te dizer se essas duas contagens seriam possíveis em um única consulta.
Mas você pode dar uma olhada no código do módulo quiz, acredito que no index tenha a listagem dos questionários.
Um dica: as tabelas envolvidas nessa consulta são "quiz" e "quiz_attempts".
Caso você tenha alguma dificuldade, poste a sua tentativa de consulta que se eu puder eu ajudo.
Abraço,
Daniel
não sei te dizer se essas duas contagens seriam possíveis em um única consulta.
Mas você pode dar uma olhada no código do módulo quiz, acredito que no index tenha a listagem dos questionários.
Um dica: as tabelas envolvidas nessa consulta são "quiz" e "quiz_attempts".
Caso você tenha alguma dificuldade, poste a sua tentativa de consulta que se eu puder eu ajudo.
Abraço,
Daniel
Obrigado Daniel.
Estou agora mesmo tentando fazer o SQL.
A qualquer feedback positivo voltarei a postar.
Grato,
Cleber Alberto.
Estou agora mesmo tentando fazer o SQL.
A qualquer feedback positivo voltarei a postar.
Grato,
Cleber Alberto.
Daniel,
Consegui criar dois sql's; o primeiro conta a quantidade de questionários que existe no curso; já o segundo verifica se está acima da média, através das respostas dos questionários de acordo com o curso.
1]
-- Selecionar o total de questionários de acordo com o curso
SELECT c.fullname, Count(q.name) AS TotalQuestionarios FROM
ned_quiz q, ned_course c WHERE q.course = '$courseid' AND c.id = '$courseid'
2]
-- Selecionar as Notas dos alunos e verificar o status (de acordo com o curso)
SELECT u.firstname, u.lastname, u.email, c.fullname, qg.grade, IF(qg.grade>=7,'Aprovado','Pendente') AS StatusAluno
FROM ned_course c, ned_user u
INNER JOIN ned_quiz q ON q.course = '$courseid'
INNER JOIN ned_quiz_grades qg ON qg.quiz = q.id AND qg.userid = u.id
WHERE u.id IN ('$usersid')
Peço que se houver algum erro no código ou na sintaxe por favor me avise.
Abraço,
Cleber Alberto.
Consegui criar dois sql's; o primeiro conta a quantidade de questionários que existe no curso; já o segundo verifica se está acima da média, através das respostas dos questionários de acordo com o curso.
1]
-- Selecionar o total de questionários de acordo com o curso
SELECT c.fullname, Count(q.name) AS TotalQuestionarios FROM
ned_quiz q, ned_course c WHERE q.course = '$courseid' AND c.id = '$courseid'
2]
-- Selecionar as Notas dos alunos e verificar o status (de acordo com o curso)
SELECT u.firstname, u.lastname, u.email, c.fullname, qg.grade, IF(qg.grade>=7,'Aprovado','Pendente') AS StatusAluno
FROM ned_course c, ned_user u
INNER JOIN ned_quiz q ON q.course = '$courseid'
INNER JOIN ned_quiz_grades qg ON qg.quiz = q.id AND qg.userid = u.id
WHERE u.id IN ('$usersid')
Peço que se houver algum erro no código ou na sintaxe por favor me avise.
Abraço,
Cleber Alberto.
Olá, Cleber
não tive a oportunidade de testar suas consultas, pois estou de férias e não tenho acesso a uma base com quizes. Todavia, elas parecem fazer sentido.
Apenas uma sugestão: evite usar os JOINs com vírgula, pois isso prejudica a leitura pois confunde clausulas de filtro (WHERE ...) com as condições de junção (ON ...). Utilizando o padrão SQL com JOINs, a sua primeira consulta ficaria assim:
Daniel
não tive a oportunidade de testar suas consultas, pois estou de férias e não tenho acesso a uma base com quizes. Todavia, elas parecem fazer sentido.
Apenas uma sugestão: evite usar os JOINs com vírgula, pois isso prejudica a leitura pois confunde clausulas de filtro (WHERE ...) com as condições de junção (ON ...). Utilizando o padrão SQL com JOINs, a sua primeira consulta ficaria assim:
SELECT c.fullname, Count(q.name) AS TotalQuestionarios
FROM ned_quiz q
JOIN ned_course c
ON c.id = q.course
WHERE c.id = '$courseid'
Note que a condição de junção relaciona colunas das tabelas, enquanto a filtragem é feita apenas na cláusula WHERE.
Abraço,Daniel
Olá, estou fazendo um webservice que ira passar algumas informações do moodle para outro sistema, estou com problemas para fazer a parte que informa se ele esta aprovado ou reprovado, a nota tenho apenas pela tabela quiz ?
estou fazendo o seguinte sql
SELECT u.id,u.data as cpf,uu.firstname as nome,mr.contextid as cod_curso, cc.fullname as nome_curso
FROM mdl_role_assignments mr
inner join mdl_user uu on uu.id=mr.userid
inner join mdl_user_info_data u on u.userid=uu.id
inner join mdl_course cc on mr.contextid=cc.id
inner join mdl_context m on m.instanceid=mr.contextid
where m.contextlevel='50' order by m.instanceid;
com o sql do colega a cima eu consigo essa informação ?
grato
estou fazendo o seguinte sql
SELECT u.id,u.data as cpf,uu.firstname as nome,mr.contextid as cod_curso, cc.fullname as nome_curso
FROM mdl_role_assignments mr
inner join mdl_user uu on uu.id=mr.userid
inner join mdl_user_info_data u on u.userid=uu.id
inner join mdl_course cc on mr.contextid=cc.id
inner join mdl_context m on m.instanceid=mr.contextid
where m.contextlevel='50' order by m.instanceid;
com o sql do colega a cima eu consigo essa informação ?
grato
Olá, Gustavo
se você quer saber a nota final do curso, você deve utilizar a tabela grade_items e procurar pelos registros que tenham itemtype = "course".
se você quer saber a nota final do curso, você deve utilizar a tabela grade_items e procurar pelos registros que tenham itemtype = "course".
Olá Daniel, assim, o que eu preciso fazer é passar a nota final de cada curso que o aluno fez.
Olá, Gustavo
na tabela grade_items estão os itens que representam as notas finais do curso, como disse antes. As notas desses itens para cada usuário podem ser encontradas na tabela grade_grades.
Abraço,
Daniel
na tabela grade_items estão os itens que representam as notas finais do curso, como disse antes. As notas desses itens para cada usuário podem ser encontradas na tabela grade_grades.
Abraço,
Daniel