estrutura de SQL
Olá pessoal,
Estou desenvolvendo uma aplicação de controla a quantidade e os valores possíveis de indenização que uma pessoa pode ter:
- o usuário preenche:
* data
* quantidade de indenização
* selecione o setor de trabalho (selectbox)
Quando ele escolhe o setor, eu chamo, via ajax um arquivo que me diz:
- se a pessoa já solicitou indenizacao naquela data
- se ela já atingiu o máximo de indenizações possíveis naquele mês
- o total de indenizações
Até agora funcionava perfeitamente, pois a pessoa só podia solicitar uma indenização de cada vez, no entanto, depois de reavaliarem, o usuário vai poder solicitar, por exemplo, 3 indenizações de cada vez.
A solução que estou trabalhando:
- criei o campo intQtdeIdz para guardar a quantidade
- um campo chamado sDias, para guardar os dias,
nesse campo (sDias), se a pessoa solicitou 3 indenizações, eu pego a data da solicitação (que é sempre o dia da primeira indenização), faço um for...next e gero as 3 datas, o dia da solitação e mais duas datas, sempre adicionando um dia, e fica mais ou menos assim (29/06/201330/06/201301/07/2013)
- depois guardo isso em um outra tabela, onde cada data é uma linha, para que, sempre que a pessoa marcar uma data e a quantidade, eu possa chegar se ela já fez um solicitação que compreenda aquela data...
o problema:
- há um limite de indenizações por mês
- quando vou fazer um novo cadastro, checo se o usuário já atingiu o máximo no mês requisitado, mas como posso fazer para checar também nas datas correlatas? pois ela nao está na tabela de indenização como um campo data, e sim texto, e na tabela onde guardo individualmente as datas, não tem todos os dados que preciso?
- a minha preocupação é que se a pessoa solicitar 3 indenizações no dia 30/06 (compreendendo também 01/07 e 02/07) se no futuro ele solicitar uma nova no mês 07 em não consiga contar corretamente as indenizações, porque a data 01/07 e 02/07 não foi colocada explicitamente na tabela de indenizações e sim da tabela auxiliar?
Tabela de indenização
CREATE TABLE `indenizacoes` (
`dID` int(11) NOT NULL AUTO_INCREMENT,
`dSetorID` int(11) NOT NULL,
`dFuncionarioID` int(11) NOT NULL,
`dViagemData` date NOT NULL,
`dValor` double NOT NULL,
`dQtdeIdz` tinyint(1) DEFAULT '0',
`sDias` varchar(100) DEFAULT NULL,
PRIMARY KEY (`dID`)
)
tabela auxiliar onde coloco as datas individualizadas
CREATE TABLE `indenizacaoDatas` (
`ddID` int(11) NOT NULL AUTO_INCREMENT,
`ddIdzID` int(11) NOT NULL,
`ddViagemData` date NOT NULL,
`ddDataAtivo` tinyint(1) NOT NULL DEFAULT '1',
`ddFuncionarioID` int(11) NOT NULL,
PRIMARY KEY (`ddID`)
Verifico a quantidade (via ajax) dessa forma:
SELECT COUNT(did) as totaldiarias, SUM(dQtdeIdz) AS inteiras, dSetorID FROM indenizacao
WHERE dFuncionarioID = '36' and dAtivo = '1' and MONTH(dViagemData) = '6'
como fazer para colocar 3 datas dentro dessa consulta, uma vez que dViagemData está em uma tabela, e é uma data isolada, e todas as datas só estão na tabela auxiliar?
Se que um join pode resolver isso, mas innet, left, right join?
Se alguém conseguiu entender o problema e puder contribuir... agradeço...
sds
Discussão (11)
Carregando comentários...