Pessoal,
Estou com dificuldades em unir duas queries através do comando UNION do SQL.
A primeira query extrai, de uma tabela ESTAGIO_DOCENCIA2, os dados relativos aos docentes do quadro permanente de uma universidade(chamados tipo = 2 -> docentes SIAPE).
select null as id_orientacao_atividade,
null as id_registro_atividade,
ed.egd_professor as id_servidor,
egd_carga_horaria as carga_horaria,
null as orientador_externo
from estagio_docencia2 ed, historico_servidores hs
where ed.egd_tipo_professor = 1
and ed.egd_professor = hs.his_ser_matricula_siape
and hs.his_ano_exercicio = (select max(s1.his_ano_exercicio) from srh.historico_servidores s1)
Esta query retorna um total de 1847 registros.
A segunda query, extrai, da tabela supracitada, os dados relativos a docentes externos à instituição (docentes tipo = 2 -> docentes não-SIAPE).
select null as id_orientacao_atividade,
null as id_registro_atividade,
ed.egd_professor as id_servidor,
egd_carga_horaria as carga_horaria,
null as orientador_externo
from estagio_docencia2 ed, outros_docentes_pesquisadores odp
where ed.egd_tipo_professor = 2
and ed.egd_professor = odp.odp_cod_docente_pesqui
Esta segunda query retorna um total de 42 registros.
O total de registros, somando-se os totais de registros obtidos executando-se as queries individualmente é, portanto, de 1889 registros.
Então, criadas as queries individuais, juntei as duas em um mesmo script através da operação SQL UNION, da seguinte forma :
select null as id_orientacao_atividade,
null as id_registro_atividade,
ed.egd_professor as id_servidor,
egd_carga_horaria as carga_horaria,
null as orientador_externo
from estagio_docencia2 ed, historico_servidores hs
where ed.egd_tipo_professor = 1
and ed.egd_professor = hs.his_ser_matricula_siape
and hs.his_ano_exercicio = (select max(s1.his_ano_exercicio) from srh.historico_servidores s1)
union
select null as id_orientacao_atividade,
null as id_registro_atividade,
ed.egd_professor as id_servidor,
egd_carga_horaria as carga_horaria,
null as orientador_externo
from estagio_docencia2 ed, outros_docentes_pesquisadores odp
where ed.egd_tipo_professor = 2
and ed.egd_professor = odp.odp_cod_docente_pesqui
O estranho é que a execução da query completa acima, que usa o UNION para juntar os resultados das queries individuais, retornou um total de apenas 834 registros.
Não deveria, esta query, retornar um resultado de : 1847 + 42 registros = 1889 registros.
Alguém poderia me ajudar a descobrir qual o problema que está acontecendo, pois não estou conseguindo ?
Agradece,
Max Carvalho