Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera,
Tenho a seguinte tabela:
CREATE TABLE IF NOT EXISTS `reg010` (
`Idaut` int(11) NOT NULL AUTO_INCREMENT,
`TipoRegistro` char(3) DEFAULT NULL,
`VersaoRegistro` char(3) DEFAULT NULL,
`FuncaoOperador` char(3) DEFAULT NULL,
`NumTsp` char(3) DEFAULT NULL,
`CodProdataOper` int(10) DEFAULT NULL,
`CodOperador` int(10) DEFAULT NULL,
`NumOnibus` int(10) DEFAULT NULL,
`Data` datetime DEFAULT NULL,
`Hora` datetime DEFAULT NULL,
`CodigoOperacao` char(3) DEFAULT NULL,
`Status` char(1) DEFAULT NULL,
`Assinatura` int(4) DEFAULT NULL,
`IdArquivo` varchar(100) DEFAULT NULL,
PRIMARY KEY (`Idaut`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='Registro TIPO 010' AUTO_INCREMENT=595
Sendo que os eventos não são inseridos de modo sequencial.
Exemplo:
O operador se vinculou no onibus em 2011-03-03 07:00 e se desvinculou as 2011-03-03 14:15, preciso fazer um select onde me retorne esses dados da seguinte maneira:
Data CodOperado HoraV HoraD
2011-03-03 001 2011-03-03 07:00 2011-03-03 14:15
Onde o CodigoOperacao para vinculacao 001 e Desvinculação 004
Alguém sabe como me ajudar??
Não sei se entendi direito, mas se nessa tabela é pra armazenar a hora da vinculação e a hora da desvinculação, deveria ter uma coluna HoraVinculacao e HoraDesvinculacao, ambas tipo DateTime em vez de uma coluna só pra data tipo DateTime e outra só para hora, também DateTime.
Dessa forma que você fez na hora que o cara desvincular vai sobrescrever o valor da hora da vinculação.
Não entendi direito sua questão e desculpe se eu estiver falando bobeira.
Senartes / Bezerk,
Eu leio as seguintes linhas um arquivo txt e gravo os dados nas tabelas:
010001001002000015492700000179150000048002028195398400100000
010001001002000015492700000179150000048002028195399400200000
010001001002000015492700000179150000048002028197976200500000
010001001002000015492700000179150000048002028198017200400000
E insiro assim:
INSERT INTO reg010 VALUES
(1, '010', '001', '002', '002', 229576, 19097, 48081, '2011-02-27 00:00:00', '2011-02-27 06:53:02', '001', '0', 0, 'TG002_48001_13138_02436_002_20110227234455_68.94.txt'),
(2, '010', '001', '002', '002', 229576, 19097, 48081, '2011-02-27 00:00:00', '2011-02-27 06:53:13', '002', '0', 0, 'TG002_48001_13138_02436_002_20110227234455_68.94.txt'),
(3, '010', '001', '002', '002', 229576, 19097, 48081, '2011-02-27 00:00:00', '2011-02-27 15:01:28', '005', '0', 0, 'TG002_48001_13138_02436_002_20110227234455_68.94.txt'),
(4, '010', '001', '002', '002', 229576, 19097, 48081, '2011-02-27 00:00:00', '2011-02-27 15:01:37', '004', '0', 0, 'TG002_48001_13138_02436_002_20110227234455_68.94.txt'),
(5, '010', '001', '002', '002', 208580, 18656, 48081, '2011-02-27 00:00:00', '2011-02-27 15:09:56', '001', '0', 0, 'TG002_48001_13138_02436_002_20110227234455_68.94.txt')
acho melhor voce fazer uma regra na hora de ler isso... e se o cara já tiver vinculado então voce apenas desvincula ele, ai deixa tudo no mesmo registro...
Faça um join com a própria tabela.
Algo assim
tabela
------
cod_onibus
tipo (chegada/saida)
datahora
select t1.cod_onibus,t1.datahora saida,t2.datahora chageda
from tabela t1,tabela t2
where t1.cod_onibus = t2.cod_onibus
and t1.tipo = 'saida'
and t2.tipo = 'chegada'
>
Data CodOperado HoraV HoraD
2011-03-03 001 2011-03-03 07:00 2011-03-03 14:15
SELECT a.Data, a.CodOperador, a.Hora AS HoraV, b.Hora AS HoraD
FROM reg010 AS a
LEFT JOIN reg010 AS b ON a.CodOperador = b.CodOperador
GROUP BY CodOperador
ORDER BY CodOperador
Uma pergunta...
Porque você não deixa a vinculação e desvinculação no mesmo registro?