Senhores estou tentando fazer um relatório que retorne todos os professores lotados para uma escola e seus movimentos (faltas, licenças ou ausencias), mas o meu SQL esta retornando somente as linhas de professores que possuem movimentações:
Temos as seguintes tabelas: funcionarios (informação dos professores), lotacoes (informações de aonde o professor esta dando aula), movimentos_professores (movimentos de faltas, licenças ou ausencias), escolas (para que retorne o nome da escola).
Inicialmente o SQL era assim, mas retorna somente os professores com movimentações:
SELECT f.nome, f.nro_cpf, l.carga_horaria, mov.dt_inicial, mov.dt_final, mov.motivo_ausencia, mov.justificada,mov.tipo_movimento, mov.quantidade , escola = esc.nome
FROM
dbafuncionarios f,
dba.lotacoes l,
dba.movimento_funcionarios mov,
dba.escolas esc
WHERE
f.i_funcionarios = l.i_funcionarios AND
l.dt_recisao IS NULL AND
l.status_lotacao = 'E' AND
mov.i_funcionarios = f.i_funcionarios AND
l.i_escolas = esc.i_escolas AND
mov.i_escolas = esc.i_escolas AND
mov.dt_inicial > :dt_inicial AND
mov.dt_final < :dt_final AND
mov.i_escolas = :escola
Após tirar algumas duvidas com um amigo ele me informou que era necessário alterar, ai o SQL ficou o seguinte: [mesmo assim não retorna todos os professores, somente os com movimentos, lembrando que eu quero que apareca no relatório o nome do professor seguido abaixo dos movimentos, mas devem aparecer sempre todos os professores.]
FROM
dba.funcionarios f LEFT OUTER JOIN bethadba.movimento_funcionarios mov ON ( f.i_funcionarios = mov.i_funcionarios AND
mov.dt_inicial > dt_inicial AND
mov.dt_final <:dt_final),
Pergunta
Lucasrs
Bom dia,
Senhores estou tentando fazer um relatório que retorne todos os professores lotados para uma escola e seus movimentos (faltas, licenças ou ausencias), mas o meu SQL esta retornando somente as linhas de professores que possuem movimentações:
Temos as seguintes tabelas: funcionarios (informação dos professores), lotacoes (informações de aonde o professor esta dando aula), movimentos_professores (movimentos de faltas, licenças ou ausencias), escolas (para que retorne o nome da escola).
Inicialmente o SQL era assim, mas retorna somente os professores com movimentações:
SELECT f.nome, f.nro_cpf, l.carga_horaria, mov.dt_inicial, mov.dt_final, mov.motivo_ausencia, mov.justificada,mov.tipo_movimento, mov.quantidade , escola = esc.nome
FROM
dbafuncionarios f,
dba.lotacoes l,
dba.movimento_funcionarios mov,
dba.escolas esc
WHERE
f.i_funcionarios = l.i_funcionarios AND
l.dt_recisao IS NULL AND
l.status_lotacao = 'E' AND
mov.i_funcionarios = f.i_funcionarios AND
l.i_escolas = esc.i_escolas AND
mov.i_escolas = esc.i_escolas AND
mov.dt_inicial > :dt_inicial AND
mov.dt_final < :dt_final AND
mov.i_escolas = :escola
Após tirar algumas duvidas com um amigo ele me informou que era necessário alterar, ai o SQL ficou o seguinte: [mesmo assim não retorna todos os professores, somente os com movimentos, lembrando que eu quero que apareca no relatório o nome do professor seguido abaixo dos movimentos, mas devem aparecer sempre todos os professores.]
SELECT
f.nome, f.nro_cpf, l.carga_horaria, mov.dt_inicial, mov.dt_final, mov.motivo_ausencia, mov.justificada,mov.tipo_movimento, mov.quantidade , escola = esc.nome
FROM
dba.funcionarios f LEFT OUTER JOIN bethadba.movimento_funcionarios mov ON ( f.i_funcionarios = mov.i_funcionarios AND
mov.dt_inicial > dt_inicial AND
mov.dt_final <:dt_final),
dba.lotacoes l,
dba.movimento_funcionarios mov,
dba.escolas esc
WHERE
f.i_funcionarios = l.i_funcionarios AND
l.dt_recisao IS NULL AND
l.status_lotacao = 'E' AND
l.i_escolas = esc.i_escolas
Lembro também que quando aparece :dt_final ou :escola significa que são variaveis jogadas pelo gerador de relatórios da empresa.
Desde já agradeço a ajuda,
Tenham todos um bom dia.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.