Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marisa Lima

Consulta sql com histórico dos colaboradores

Recommended Posts

Boas.

 

Tenho uma aplicação para gerir avaliações de desempenho online. Os dados do colaborador são guardados em duas tabelas, uma chamada colaborador onde ficam os dados que nunca vão sofrer alteração e outra chamada dados_colaborador onde ficam os dados que podem sofrer alterações entre avaliações de desempenho, como por exemplo a pessoa mudar de função ou fábrica, já que a empresa é composta por 3 fábricas.

Este ano foi utilizada a primeira vez (avaliado ano 2012) e funcionou perfeitamente, tendo no final a necessidade de obter relatórios com informação sobre a avaliação. O meu problema é que já comecei a preparar a avaliação do ano 2013 e realizei actualizações na BD onde alguns colaboradores mudaram de fábrica!

 

Tenho uma data de alteração que indica quando o mesmo foi alterado, e um campo que me diz se o mesmo é ou não avaliado. O meu problema está que em 2012 a pessoa Y estava na fábrica X e em 2013 vai estar na fábrica Z. Como é que eu posso ir buscar informação por exemplo sobre quantas pessoas estão numa dada fábrica em 2013 sem comprometer o histórico de 2012?

Tentei desta forma mas só funciona para o primeiro ano:

 

Select Count(*) as total,TESTE.descricao fROM
(Select distinct colaborador.nome,MAX(dados_colaborador.data_alteracao) as alt,funcao.descricao
from colaborador inner join dados_colaborador on
colaborador.id=dados_colaborador.id_colaborador
inner join empresa on dados_colaborador.id_empresa=empresa.id
inner join funcao on dados_colaborador.id_funcao=funcao.id
where dados_colaborador.data_alteracao < '$dados' and dados_colaborador.estado='activo' and empresa.nome='$fab'
and dados_colaborador.avaliado='NÃO'
group by colaborador.id) TESTE
group by TESTE.descricao
Espero que me consigam ajudar. Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A tabela dados_colaborador tem uma vigência do tipo Data De / Data Ate ?

Bastaria algo como ...

 

 

$dados' between data_de and COALESCE(data_ate,CURDATE())

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A tabela dados_colaborador tem uma vigência do tipo Data De / Data Ate ?

Bastaria algo como ...

 

 

$dados' between data_de and COALESCE(data_ate,CURDATE())

neste momento só tinha o campo data_alteracao, mas posso modificar para uma data inicio e fim. Mas da forma como me indicou em cima não funciona. Por exemplo eu em 2012 tinha um nº sap e uma função diferente da que tenho agora em 2013.

Preciso que quando vou buscar a minha informação relativa a 2012 apareçam os dados dessa altura sendo a data_inicio 2012-04-16 e a data_fim 2013-04-16.

coloquei assim:

 

SELECT c.nome,dc.sap,c.email,c.conta_windows, f.descricao,co.nome as chefe FROM colaborador c inner join dados_colaborador dc ON c.id=dc.id_colaborador inner join funcao f ON dc.id_funcao=f.id inner join colaborador co ON dc.id_chefe =co.id inner join momento_avaliacao_colaborador mac on c.id=mac.id_colaborador inner join momento_avaliacao ma on mac.id_momento_avaliacao=ma.id WHERE c.id='5' AND ma.data_fim='2013-02-28' between dc.data_inicio and dc.data_fim 

Obrigada

Compartilhar este post


Link para o post
Compartilhar em outros sites


SELECT c.nome,dc.sap,c.email,c.conta_windows, f.descricao,co.nome as chefe

FROM colaborador c

inner join dados_colaborador dc

ON c.id=dc.id_colaborador

inner join funcao f

ON dc.id_funcao=f.id

inner join colaborador co

ON dc.id_chefe =co.id

inner join momento_avaliacao_colaborador mac

on c.id=mac.id_colaborador

inner join momento_avaliacao ma

on mac.id_momento_avaliacao=ma.id

WHERE c.id='5'

AND ma.data_fim='2013-02-28'

and ma.data_fim between dc.data_inicio and dc.data_fim

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Percebi o raciocínio, mas tenho a situação de a dc.data_inicio='0000-00-00' e a dc.data_fim é nula como é que faço nesta situação? Com o exemplo acima não me selecciona nada pois no primeiro ano só está preenchida a data inicio dos dados dos colaboradores a data fim está a nulo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.