Estou desenvolvendo um sistema de controle de processos jurídicos, no banco existe uma tabela 'processos' onde são armazenados alguns dados de cada processo e outra tabela 'historico' onde são armazenadas as publicações e anotações de cada processo e a data em que o mesmo foi lançado no sistema. Uma das opções de pesquisa de processo é 'Não movimentado à...', então sempre que uma publicação ou anotação é lançada para um processo o sistema entende que este processo foi movimentado, preciso de uma consulta que peque o id do processo na tabela processos, selecione todos os registros na tabela historico referentes a este processo pelo campo id_processo, e selecione destes registros o que tem a maior data, para que o sistema possa saber se a ultima movimentação se encaixa ou não no critério de pesquisa, que é a data atual menos o numero de dias que o usuario do sistema definir.
Pergunta
michelframos
Estou enfrentando o seguinte problema:
Estou desenvolvendo um sistema de controle de processos jurídicos, no banco existe uma tabela 'processos' onde são armazenados alguns dados de cada processo e outra tabela 'historico' onde são armazenadas as publicações e anotações de cada processo e a data em que o mesmo foi lançado no sistema. Uma das opções de pesquisa de processo é 'Não movimentado à...', então sempre que uma publicação ou anotação é lançada para um processo o sistema entende que este processo foi movimentado, preciso de uma consulta que peque o id do processo na tabela processos, selecione todos os registros na tabela historico referentes a este processo pelo campo id_processo, e selecione destes registros o que tem a maior data, para que o sistema possa saber se a ultima movimentação se encaixa ou não no critério de pesquisa, que é a data atual menos o numero de dias que o usuario do sistema definir.
alguém tem alguma idéia de como se faz isso?
Estrutura das Tabelas:
Tabela Processos:
CREATE TABLE `processos` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`pasta` VARCHAR(30) NULL DEFAULT NULL,
`numero` VARCHAR(50) NULL DEFAULT NULL,
`numero_ordem` VARCHAR(50) NULL DEFAULT NULL,
`area_id` INT(11) NULL DEFAULT NULL,
`tipo_acao_id` INT(11) NULL DEFAULT NULL,
`local_id` INT(11) NULL DEFAULT NULL,
`fase_id` INT(11) NULL DEFAULT NULL,
`advogado_id` INT(11) NULL DEFAULT NULL,
`cliente_id` INT(11) NULL DEFAULT NULL,
`cliente_nome` VARCHAR(100) NULL DEFAULT NULL,
`data_inicial` DATE NULL DEFAULT NULL,
`data_encerramento` DATE NULL DEFAULT NULL,
`posicao_cliente` VARCHAR(30) NULL DEFAULT NULL,
`autor` INT(11) NULL DEFAULT NULL,
`data_cadastro` DATETIME NULL DEFAULT NULL,
`autor_alteracao` INT(11) NULL DEFAULT NULL,
`ultima_alteracao` DATETIME NULL DEFAULT NULL,
`status` VARCHAR(1) NULL DEFAULT NULL,
`observacoes` TEXT NULL,
`tipo_processo` VARCHAR(20) NOT NULL,
`digitalizado` VARCHAR(1) NOT NULL,
`quitado` VARCHAR(1) NOT NULL,
`eletronico` VARCHAR(1) NOT NULL,
`envolvidos` TEXT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4614
;
Tabela Historico:
CREATE TABLE `historico` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`processo_id` INT(11) NOT NULL,
`tipo` VARCHAR(30) NULL DEFAULT NULL,
`observacoes` MEDIUMTEXT NULL,
`data` DATE NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=1315
;
O select que fiz, mas que não me atentei para o fato de ser um relacionamento para muitos:
SELECT h.id as id_historico, h.data, p.* FROM historico AS h LEFT JOIN processos AS p ON h.processo_id = p.id WHERE h.data < :data GROUP BY p.numero
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados