Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Em nossa base de dados, somente consideramos a matrícula de um aluno ativa quando ele tem pelo menos uma parcela paga.
Preciso pegar todas as matrículas que o aluno não pagou nenhuma parcela.
Minha estrutura atual está assim:
aluno(Id_aluno, nome)
turma(Id_turma, Id_curso, nome)
matricula(Id_matricula, Id_aluno, Id_turma, data_matricula)
parcela(Id_parcela, Id_matricula, vencimento, valor, status)
Tentei da forma abaixo mas não consegui resultado satisfatório:
SELECT
m.Id_matricula, a.nome nomeA, t.nome nomeT, m.status
FROM
matricula m, aluno a, turma t
WHERE
m.Id_aluno = a.Id_aluno AND
m.Id_turma = t.Id_turma AND
m.Id_matricula NOT IN (SELECT p.Id_matricula FROM parcela p WHERE p.status != 1);
// p.status: 0: aberta / 1: paga
Alguém poderia me orientar?
Feliz 2014 para todos.
Ele não executa, a tabela matricula tem mais de 13.000 registros e a de parcelas mais de 182.000. Faz mais de meias hora que coloquei query no PhpMyAdmin e até agora ele não me deu resultado.
Tente :
SELECT m.Id_matricula, a.nome nomeA, t.nome nomeT, m.status
FROM matricula m, aluno a, turma t
WHERE m.Id_aluno = a.Id_aluno
AND m.Id_turma = t.Id_turma
AND m.Id_matricula NOT EXISTS (SELECT p.Id_matricula
FROM parcela p
WHERE P.ID_MATRICULA = m.Id_matricula
AND p.status != 1);
// p.status: 0: aberta / 1: paga
Estas tabelas tem índices ?
Me parece certo, qual o erro ?