huerta 0 Denunciar post Postado Outubro 24, 2008 Olá a todos. Estou com dificuldade em criar um select na tabela e não consigo, vou mostrar: Tenho a tabela TB_emprego que é formada da seguinte maneira: CREATE TABLE `TB_emprego` ( `cd_trab` int(8) NOT NULL, //é o código do trabalhador `cd_emp` int(8) NOT NULL, //é o dodigo da empresa `cd_func` int(8) NOT NULL //é o dodigo da função `obra` int(8) NOT NULL, //é a referencia com a obra `dt_admis` date NOT NULL, //é a data de contratação `dt_demis` date NOT NULL, //é a data de demissão `desc_dem` text, //é a descrição da demissão KEY `cd_trab` (`cd_trab`), KEY `cd_emp` (`cd_emp`), KEY `cd_func` (`cd_func`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Ela é preenchida quando um trabalhador é contratado ou demitido e podem aparecer outros registros do mesmo trabalhador na empresa. Pois pode ser readmitido em outra data pela mesma empresa ou outra. A nossa referencia de emprego/desemprego fica por conta do campo dt_demis, que ficará com 0000-00-00 quando estiver ainda trabalhando, se for demitido recebe a data do dia. Estou tentando buscar da tabela o cd_trab onde a dt_demis seja diferente (<>) de 0000-00-00, mas deve pegar apenas um referencia de cada trabalhador e que seja a última, descosiderando o historico deste trabalhador. Ou seja, tenho que buscar o cd_trab dos trabalhadores que estão desempregados. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Outubro 25, 2008 Já pensou na hipótese da abrir este modelo em : emprego---<movimentacoes Assim teria uma histórico da pessoa. Compartilhar este post Link para o post Compartilhar em outros sites
huerta 0 Denunciar post Postado Outubro 27, 2008 Não entendi..... http://forum.imasters.com.br/public/style_emoticons/default/blush.gif Compartilhar este post Link para o post Compartilhar em outros sites
huerta 0 Denunciar post Postado Novembro 10, 2008 Para ficar um pouco mais claro, tenho o exemplo abaixo: SELECT cd_func FROM TB_emprego WHERE dt_demis <> '0000-00-00' "Quero somente os que tem dt_demis diferente de 0000-00-00, mas somte um registro (cd_func) de cada funcionario pegando a ultima data, pois pode aparecer outros registros deste funcionario, conforme tabela abaixo, numero 41. " +---------+----------+---------+-------+--------------+--------------+-------------+ | cd_trab | cd_emp | cd_func | obra | dt_admis | dt_demis | desc_dem | +---------+----------+---------+-------+--------------+--------------+-------------+ | 41 | 21 | 2 | 2 | 2008-08-22 | 2008-09-22 | NULL | | 41 | 23 | 2 | 2 | 2008-10-22 | 2008-10-22 | NULL | | 33 | 23 | 8 | 1 | 2008-10-22 | 2008-10-22 | NULL | | 31 | 23 | 13| 2 | 2008-10-01 | 2008-10-22 | NULL | | 41 | 17 | 18| 1 | 2008-10-24 | 0000-00-00 | NULL | | 31 | 33 | 8 | 5 | 2008-11-07 | 0000-00-00 | NULL | +---------+----------+---------+-------+--------------+--------------+-------------+ No exemplo abaixo, o resultario deveria aparecer os dois funcionarios que estão desempregados | 41 | 23 | 2 | 2 | 2008-10-22 | 2008-10-22 | NULL | 31 | 23 | 13| 2 | 2008-10-01 | 2008-10-22 | NULL Compartilhar este post Link para o post Compartilhar em outros sites
giesta 29 Denunciar post Postado Novembro 11, 2008 SELECT cd_func , max(dt_demiss) ultima_demissao FROM TB_emprego WHERE dt_demis <> '0000-00-00' GROUP BY cd_func Compartilhar este post Link para o post Compartilhar em outros sites