SQL Para consultas de notas

SQL Para consultas de notas

por Cleber Alberto -
Número de respostas: 13
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.
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: SQL Para consultas de notas

por Cleber Alberto -
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
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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.
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: SQL Para consultas de notas

por Cleber Alberto -
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.
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por Cleber Alberto -
Daniel,

Você saberia a escrita de um SQL que pudesse listar quantos questionário há no curso e quantos o aluno respondeu?
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: SQL Para consultas de notas

por Cleber Alberto -
Obrigado Daniel.

Estou agora mesmo tentando fazer o SQL.
A qualquer feedback positivo voltarei a postar.

Grato,

Cleber Alberto.
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por 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.
Contagem das avaliações:  -
Em resposta à Cleber Alberto

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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:

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
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: SQL Para consultas de notas

por Gustavo de Souza -
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
Contagem das avaliações:  -
Em resposta à Gustavo de Souza

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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".
Contagem das avaliações:  -
Em resposta à Daniel Neis Araujo

Re: SQL Para consultas de notas

por Gustavo de Souza -
Olá Daniel, assim, o que eu preciso fazer é passar a nota final de cada curso que o aluno fez.
Contagem das avaliações:  -
Em resposta à Gustavo de Souza

Re: SQL Para consultas de notas

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators
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
Contagem das avaliações:  (1)