JRPETROLINA Postado Janeiro 11, 2012 Denunciar Share Postado Janeiro 11, 2012 olá pessoal, é o seguinte: foi criado essas tabelas.TABELA BAGAGEM:IDNOME PASSAGEIROPESOcaminho_IDTABELA CAMINHO:IDDESCRICAOTABELA RADIO:IDDESCRICAOQUANT_RECEPTORTABELA RECEPTOR:IDDESCRICAONUMERO_RECEPTORradio_IDTABELA LOCAL:IDDESCRICAOTIPO_LOCALreceptor_IDradio_IDTABELA HISTORICO_BAGAGEM:IDDATA_MOVHORA_MOVlocal_IDbagagem_IDEU FIZ ESSA QUERY : select b.NOME_PASSAGEIRO,l.DESCRICAO AS 'LOCAL' ,h.DATA_MOVIMENTO,h.HORA_MOVIMENTOfrom historico_bagagem hinner join local l on l.ID= h.LOCAL_IDinner join bagagem b on b.`ID` = h.`BAGAGEM_ID`INNER JOIN(SELECT MAX(hr.`HORA_MOVIMENTO`) - MIN(hr.`HORA_MOVIMENTO`) AS 'TEMPO TOTAL' FROM historico_bagagem hr)h ON l.ID= h.`LOCAL_ID`NOME_PASSAGEIRO LOCAL DATA_MOVIMENTO HORA_MOVIMENTODIOGENES MORAES CHECK-IN NORTE 6/1/2012 15:48:25DIOGENES MORAES CHECK-IN NORTE 6/1/2012 15:48:50DIOGENES MORAES ESTEIRA NORTE INI 6/1/2012 15:49:09DIOGENES MORAES ESTEIRA NORTE FIM 6/1/2012 15:49:43LEONARDO FERREIRA CHECK-IN SUDOE 10/1/2012 15:58:06LEONARDO FERREIRA ESTEIRA SUL INICIO 10/1/2012 15:58:06LEONARDO FERREIRA ESTEIRA SUL FIM 10/1/2012 15:58:06LEONARDO FERREIRA RECOLHIMENTO SUL 10/1/2012 15:58:06LEONARDO FERREIRA CARRO EMBARQ SUL 10/1/2012 15:58:06MARIA LAICE FERREI CHECK-IN NORTE 12/1/2012 16:00:50MARIA LAICE FERREI ESTEIRA NORTE INI 12/1/2012 16:00:50MARIA LAICE FERREI ESTEIRA NORTE FIM 12/1/2012 16:00:50MARIA LAICE FERREI RECOLHIME NORTE 12/1/2012 16:00:50MARIA LAICE FERREI CARRO EMBA NORTE 12/1/2012 16:00:50 EU QUERIA QUE RETORNA-SE O NOME, LOCAL DATA, E O TEMPO TOTAL DE CADA BAGAGEM QUE FOI 1° LOCAL ONDE ELE PASSOU ATÉ O ULTIMO. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 11, 2012 Denunciar Share Postado Janeiro 11, 2012 Oi 'JRPETROLINA'Tente assim:SELECT b.nome_passageiro, l.descricao AS LOCAL, h1.DATA_MOVIMENTO, h1.Hora_inicial, h2.Hora_final, TIMEDIFF(h1.Hora_inicial, h2.Hora_final) AS Tempo_Total -- Pode usar a função SUBTIME, também FROM historico_bagagem h INNER JOIN bagagem b ON b.`ID` = h.`BAGAGEM_ID` INNER JOIN local l ON l.id = h.local_id INNER JOIN ( SELECT hb1.id, MIN(hb1.`hora_movimento`) AS Hora_inicial FROM historico_bagagem hb1 GROUP BY hb1.id ) h1 ON h1.id = h.id INNER JOIN ( SELECT hb2.id, MAX(hb2.`hora_movimento`) AS Hora_final FROM historico_bagagem hb2 GROUP BY hb2.id ) h2 ON h2.id = h.idNão testei o código.Para melhor funcionamento, na tabela HISTORICO_BAGAGEM substitua os campos DATA_MOV (date) e HORA_MOV (time) por um único campo com tipo datetime. Isto evitará o erro que detectei quando estava escrevendo o código acima, que é o de a viagem começar em um dia e acabar em outro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JRPETROLINA Postado Janeiro 12, 2012 Autor Denunciar Share Postado Janeiro 12, 2012 DENIS, TUDO beleza, SÓ QUE OS 'TEMPO_TOTAL' ESTÃO TODOS ZERADOS.POR ALGUM MOTIVO O "TIMEDIFF" E O "SUBTIME" NÃO ESTÁ SENDO ATIVADO(NÃO ESTÁ MUDANDO DE COR).(TIMEDIFF(h1.Hora_inicial, h2.Hora_final) AS Tempo_Total)SERÁ QUE É MINHA IDE(NETBEANS 6.7.1)?OU O BANCO 5.5.19??Oi 'JRPETROLINA'Tente assim:SELECT b.nome_passageiro, l.descricao AS LOCAL, h1.DATA_MOVIMENTO, h1.Hora_inicial, h2.Hora_final, TIMEDIFF(h1.Hora_inicial, h2.Hora_final) AS Tempo_Total -- Pode usar a função SUBTIME, também FROM historico_bagagem h INNER JOIN bagagem b ON b.`ID` = h.`BAGAGEM_ID` INNER JOIN local l ON l.id = h.local_id INNER JOIN ( SELECT hb1.id, MIN(hb1.`hora_movimento`) AS Hora_inicial FROM historico_bagagem hb1 GROUP BY hb1.id ) h1 ON h1.id = h.id INNER JOIN ( SELECT hb2.id, MAX(hb2.`hora_movimento`) AS Hora_final FROM historico_bagagem hb2 GROUP BY hb2.id ) h2 ON h2.id = h.idNão testei o código.Para melhor funcionamento, na tabela HISTORICO_BAGAGEM substitua os campos DATA_MOV (date) e HORA_MOV (time) por um único campo com tipo datetime. Isto evitará o erro que detectei quando estava escrevendo o código acima, que é o de a viagem começar em um dia e acabar em outro.DENIS, TUDO beleza, SÓ QUE OS 'TEMPO_TOTAL' ESTÃO TODOS ZERADOS.POR ALGUM MOTIVO O "TIMEDIFF" E O "SUBTIME" NÃO ESTÁ SENDO ATIVADO(NÃO ESTÁ MUDANDO DE COR).(TIMEDIFF(h1.Hora_inicial, h2.Hora_final) AS Tempo_Total)SERÁ QUE É MINHA IDE(NETBEANS 6.7.1)?OU O BANCO 5.5.19?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 12, 2012 Denunciar Share Postado Janeiro 12, 2012 DENIS, TUDO beleza, SÓ QUE OS 'TEMPO_TOTAL' ESTÃO TODOS ZERADOS.POR ALGUM MOTIVO O "TIMEDIFF" E O "SUBTIME" NÃO ESTÁ SENDO ATIVADO(NÃO ESTÁ MUDANDO DE COR).(TIMEDIFF(h1.Hora_inicial, h2.Hora_final) AS Tempo_Total)SERÁ QUE É MINHA IDE(NETBEANS 6.7.1)?OU O BANCO 5.5.19??O tipo dos campos é time? Os dois campos necessitam estar com o mesmo tipo de dados para a função funcionar.Veja Manual MySQL 5.5 para uso da função TIMEDIFF Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JRPETROLINA Postado Janeiro 12, 2012 Autor Denunciar Share Postado Janeiro 12, 2012 (editado) todos os campos eu alterei "TIME" E "DATE" PARA "TIMESTAMP"(19)!!!! OBS: NOTE OS TEMPOS IGUAIS DE INICIAL E FINALNOME_PASSAGEIRO LOCAL DATA_MOVIMENTO HORA_INICIAL HORA_FINAL TEMPO_TOTALDIOGENES MORAES CHECK-IN NORTE 2012-01-11 20:35:38.0 2012-01-11 20:35:40.0 2012-01-11 20:35:40.0 00:00:00DIOGENES MORAES CHECK-IN NORTE 2012-01-11 20:36:01.0 2012-01-11 20:36:03.0 2012-01-11 20:36:03.0 00:00:00DIOGENES MORAES ESTEIRA NORTE FIM 2012-01-11 20:36:10.0 2012-01-11 20:36:10.0 2012-01-11 20:36:10.0 00:00:00DIOGENES MORAES RECOLHIMENTO NORTE 2012-01-11 20:36:23.0 2012-01-11 20:36:23.0 2012-01-11 20:36:23.0 00:00:00DIOGENES MORAES CARRO EMBARQUE NORTE 2012-01-11 20:36:30.0 2012-01-11 20:36:30.0 2012-01-11 20:36:30.0 00:00:00LEONARDO FERREIR CHECK-IN SUL 2012-01-11 21:23:15.0 2012-01-11 21:22:07.0 2012-01-11 21:22:07.0 00:00:00LEONARDO FERREI CHECK-IN SUL 2012-01-11 21:22:16.0 2012-01-11 21:22:16.0 2012-01-11 21:22:16.0 00:00:00LEONARDO FERREI ESTEIRA SUL INICIO 2012-01-11 21:22:27.0 2012-01-11 21:22:27.0 2012-01-11 21:22:27.0 00:00:00LEONARDO FERREI ESTEIRA SUL FIM 2012-01-11 21:22:40.0 2012-01-11 21:22:40.0 2012-01-11 21:22:40.0 00:00:00LEONARDO FERREIRA RECOLHIMENTO SUL 2012-01-11 21:23:03.0 2012-01-11 21:23:04.0 2012-01-11 21:23:04.0 00:00:00LEONARDO FERREIRA CARRO EMBARQUE SUL 2012-01-11 21:23:09.0 2012-01-11 21:23:10.0 2012-01-11 21:23:10.0 00:00:00 Editado Janeiro 12, 2012 por JRPETROLINA Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 12, 2012 Denunciar Share Postado Janeiro 12, 2012 'JRPETROLINA'Peguei seus dados e reproduzi assim:CREATE DATABASE `JRPETROLINA`; USE `JRPETROLINA`; CREATE TABLE BAGAGEM( ID INT, NOME_PASSAGEIRO VARCHAR(60), PESO DOUBLE, caminho_ID INT )ENGINE=MYISAM; INSERT INTO BAGAGEM(ID, NOME_PASSAGEIRO) VALUES(1,'DIOGENES MORAES'),(2,'LEONARDO FERREIRA'),(3,'XXXXXXXXX'); CREATE TABLE CAMINHO( ID INT, DESCRICAO VARCHAR(50) )ENGINE = MYISAM; CREATE TABLE RADIO( ID INT, DESCRICAO VARCHAR(50), QUANT_RECEPTOR INT )ENGINE=MYISAM; CREATE TABLE RECEPTOR( ID INT, DESCRICAO VARCHAR(50), NUMERO_RECEPTOR INT, radio_ID INT )ENGINE=MYISAM; CREATE TABLE `LOCAL`( ID INT, DESCRICAO VARCHAR(50), TIPO_LOCAL INT, receptor_ID INT, radio_ID INT)ENGINE=MYISAM; INSERT INTO `LOCAL`(id,DESCRICAO) VALUES (1,'CHECK-IN NORTE'),(2,'ESTEIRA NORTE FIM'),(3,'RECOLHIMENTO NORTE') ,(4,'CARRO EMBARQUE NORTE'),(5,'CHECK-IN SUL'),(6,'ESTEIRA SUL INICIO') ,(7,'ESTEIRA SUL FIM'),(8,'RECOLHIMENTO SUL'),(9,'CARRO EMBARQUE SUL'); CREATE TABLE HISTORICO_BAGAGEM( ID INT, DH_MOVIMENTO DATETIME, local_ID INT, bagagem_ID INT)ENGINE=MYISAM; /*NOME_PASSAGEIRO LOCAL DATA_MOVIMENTO HORA_INICIAL HORA_FINAL TEMPO_TOTAL 1, 1,'2012-01-11 20:35:38.0','2012-01-11 20:35:40.0 2012-01-11 20:35:40.0 00:00:00 1, 1,'2012-01-11 20:36:01.0','2012-01-11 20:36:03.0 2012-01-11 20:36:03.0 00:00:00 1, 2,'2012-01-11 20:36:10.0','2012-01-11 20:36:10.0 2012-01-11 20:36:10.0 00:00:00 1, 3,'2012-01-11 20:36:23.0','2012-01-11 20:36:23.0 2012-01-11 20:36:23.0 00:00:00 1, 4,'2012-01-11 20:36:30.0','2012-01-11 20:36:30.0 2012-01-11 20:36:30.0 00:00:00 2, 5,'2012-01-11 21:23:15.0','2012-01-11 21:22:07.0 2012-01-11 21:22:07.0 00:00:00 2, 5,'2012-01-11 21:22:16.0','2012-01-11 21:22:16.0 2012-01-11 21:22:16.0 00:00:00 2, 6,'2012-01-11 21:22:27.0','2012-01-11 21:22:27.0 2012-01-11 21:22:27.0 00:00:00 2, 7,'2012-01-11 21:22:40.0','2012-01-11 21:22:40.0 2012-01-11 21:22:40.0 00:00:00 2, 8,'2012-01-11 21:23:03.0','2012-01-11 21:23:04.0 2012-01-11 21:23:04.0 00:00:00 2, 9,'2012-01-11 21:23:09.0','2012-01-11 21:23:10.0 2012-01-11 21:23:10.0 00:00:00*/ INSERT INTO HISTORICO_BAGAGEM(ID,bagagem_ID,local_ID,DH_MOV) VALUES (1,1,1,'2012-01-11 20:35:38.0'), (1,1,1,'2012-01-11 20:35:40.0'), (2,1,1,'2012-01-11 20:36:01.0'), (2,1,1,'2012-01-11 20:36:03.0'), (3,1,2,'2012-01-11 20:36:10.0'), (3,1,2,'2012-01-11 20:36:11.0'), (4,1,3,'2012-01-11 20:36:23.0'), (4,1,3,'2012-01-11 20:36:23.0'), (5,1,4,'2012-01-11 20:36:30.0'), (5,1,4,'2012-01-11 20:36:30.0'), (6,2,5,'2012-01-11 21:23:15.0'), (6,2,5,'2012-01-11 21:22:07.0'), (7,2,5,'2012-01-11 21:22:16.0'), (7,2,5,'2012-01-11 21:22:16.0'), (8,2,6,'2012-01-11 21:22:27.0'), (8,2,6,'2012-01-11 21:22:27.0'), (9,2,7,'2012-01-11 21:22:40.0'), (9,2,7,'2012-01-11 21:22:40.0'), (10,2,8,'2012-01-11 21:23:03.0'), (10,2,8,'2012-01-11 21:23:04.0'), (11,2,9,'2012-01-11 21:23:09.0'), (11,2,9,'2012-01-11 21:23:10.0'); SELECT b.nome_passageiro, l.descricao AS LOCAL, DATE(h.DH_MOVIMENTO) AS DATA_MOVIMENTO, h1.Hora_inicial, h2.Hora_final, TIMEDIFF(h2.Hora_final, h1.Hora_inicial) AS Tempo_Total -- Pode usar a função SUBTIME, também FROM historico_bagagem h INNER JOIN bagagem b ON b.`ID` = h.`BAGAGEM_ID` INNER JOIN LOCAL l ON l.id = h.local_id INNER JOIN ( SELECT hb1.id, MIN(hb1.`dh_movimento`) AS Hora_inicial FROM historico_bagagem hb1 GROUP BY hb1.id ) h1 ON h1.id = h.id INNER JOIN ( SELECT hb2.id, MAX(hb2.`dh_movimento`) AS Hora_final FROM historico_bagagem hb2 GROUP BY hb2.id ) h2 ON h2.id = h.id Obtive este resultado: "nome_passageiro" "LOCAL" "DATA_MOVIMENTO" "Hora_inicial" "Hora_final" "Tempo_Total" "DIOGENES MORAES" "CHECK-IN NORTE" "2012-01-11" "2012-01-11 20:35:38" "2012-01-11 20:35:40" "00:00:02" "DIOGENES MORAES" "CHECK-IN NORTE" "2012-01-11" "2012-01-11 20:35:38" "2012-01-11 20:35:40" "00:00:02" "DIOGENES MORAES" "CHECK-IN NORTE" "2012-01-11" "2012-01-11 20:36:01" "2012-01-11 20:36:03" "00:00:02" "DIOGENES MORAES" "CHECK-IN NORTE" "2012-01-11" "2012-01-11 20:36:01" "2012-01-11 20:36:03" "00:00:02" "DIOGENES MORAES" "ESTEIRA NORTE FIM" "2012-01-11" "2012-01-11 20:36:10" "2012-01-11 20:36:11" "00:00:01" "DIOGENES MORAES" "ESTEIRA NORTE FIM" "2012-01-11" "2012-01-11 20:36:10" "2012-01-11 20:36:11" "00:00:01" "DIOGENES MORAES" "RECOLHIMENTO NORTE" "2012-01-11" "2012-01-11 20:36:23" "2012-01-11 20:36:23" "00:00:00" "DIOGENES MORAES" "RECOLHIMENTO NORTE" "2012-01-11" "2012-01-11 20:36:23" "2012-01-11 20:36:23" "00:00:00" "DIOGENES MORAES" "CARRO EMBARQUE NORTE" "2012-01-11" "2012-01-11 20:36:30" "2012-01-11 20:36:30" "00:00:00" "DIOGENES MORAES" "CARRO EMBARQUE NORTE" "2012-01-11" "2012-01-11 20:36:30" "2012-01-11 20:36:30" "00:00:00" "LEONARDO FERREIRA" "CHECK-IN SUL" "2012-01-11" "2012-01-11 21:22:07" "2012-01-11 21:23:15" "00:01:08" "LEONARDO FERREIRA" "CHECK-IN SUL" "2012-01-11" "2012-01-11 21:22:07" "2012-01-11 21:23:15" "00:01:08" "LEONARDO FERREIRA" "CHECK-IN SUL" "2012-01-11" "2012-01-11 21:22:16" "2012-01-11 21:22:16" "00:00:00" "LEONARDO FERREIRA" "CHECK-IN SUL" "2012-01-11" "2012-01-11 21:22:16" "2012-01-11 21:22:16" "00:00:00" "LEONARDO FERREIRA" "ESTEIRA SUL INICIO" "2012-01-11" "2012-01-11 21:22:27" "2012-01-11 21:22:27" "00:00:00" "LEONARDO FERREIRA" "ESTEIRA SUL INICIO" "2012-01-11" "2012-01-11 21:22:27" "2012-01-11 21:22:27" "00:00:00" "LEONARDO FERREIRA" "ESTEIRA SUL FIM" "2012-01-11" "2012-01-11 21:22:40" "2012-01-11 21:22:40" "00:00:00" "LEONARDO FERREIRA" "ESTEIRA SUL FIM" "2012-01-11" "2012-01-11 21:22:40" "2012-01-11 21:22:40" "00:00:00" "LEONARDO FERREIRA" "RECOLHIMENTO SUL" "2012-01-11" "2012-01-11 21:23:03" "2012-01-11 21:23:04" "00:00:01" "LEONARDO FERREIRA" "RECOLHIMENTO SUL" "2012-01-11" "2012-01-11 21:23:03" "2012-01-11 21:23:04" "00:00:01" "LEONARDO FERREIRA" "CARRO EMBARQUE SUL" "2012-01-11" "2012-01-11 21:23:09" "2012-01-11 21:23:10" "00:00:01" "LEONARDO FERREIRA" "CARRO EMBARQUE SUL" "2012-01-11" "2012-01-11 21:23:09" "2012-01-11 21:23:10" "00:00:01" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JRPETROLINA Postado Janeiro 12, 2012 Autor Denunciar Share Postado Janeiro 12, 2012 ESSES COMANDOS ENGINE=MYISAM, NÃO CONHEÇO.TEM CONFIGURAR ALGUMA COISA?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 13, 2012 Denunciar Share Postado Janeiro 13, 2012 ESSES COMANDOS ENGINE=MYISAM, NÃO CONHEÇO.TEM CONFIGURAR ALGUMA COISA??MyISAM é uma engine do Mysql que cria as tabelas em forma de arquivos. Isto evita que eu crie lixo em minha base que é InnoDB. Eu poderia ter usado a engine MEMORY que cria as tabelas em memória, já que o uso foi único, mas preferi assim para o caso de você ainda ter dúvidas e eu precisar recompor as tabelas e seus dados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JRPETROLINA Postado Janeiro 13, 2012 Autor Denunciar Share Postado Janeiro 13, 2012 ESTOU USANDO A IDE HeidiSQL 6.0.0.3603CREATE TABLE `historico_bagagem` ( `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `DH_MOVIMENTO` DATETIME NULL DEFAULT NULL, `LOCAL_H_ID` BIGINT(20) UNSIGNED NOT NULL, `BAGAGEM_H_ID` BIGINT(20) UNSIGNED NOT NULL, PRIMARY KEY (`ID`), INDEX `LOCAL_H_ID` (`LOCAL_H_ID`), INDEX `BAGAGEM_H_ID` (`BAGAGEM_H_ID`), CONSTRAINT `BAGAGEM_H_ID` FOREIGN KEY (`BAGAGEM_H_ID`) REFERENCES `bagagem` (`ID`), CONSTRAINT `LOCAL_H_ID` FOREIGN KEY (`LOCAL_H_ID`) REFERENCES `local` (`ID`))COLLATE='latin1_swedish_ci'ENGINE=InnoDBROW_FORMAT=DEFAULTAUTO_INCREMENT=11-----------------------------------------------------------------------select b.NOME_PASSAGEIRO, l.DESCRICAO AS 'LOCAL',DATE(h.DH_MOVIMENTO) AS 'DATA_MOVIMENTO',h1.HORA_INICIAL,h2.HORA_FINAL,TIMEDIFF(h2.HORA_FINAL, h1.HORA_INICIAL) AS 'TEMPO_TOTAL'FROM historico_bagagem hINNER JOIN bagagem b ON b.ID = h.BAGAGEM_H_IDINNER JOIN local l ON l.ID = h.LOCAL_H_IDINNER JOIN ( SELECT hb1.ID, MIN(hb1.DH_MOVIMENTO) AS 'HORA_INICIAL' FROM historico_bagagem hb1 GROUP BY hb1.ID) hl ON hl.ID = h.IDINNER JOIN ( SELECT hb2.ID, MAX(hb2.DH_MOVIMENTO) AS 'HORA_FINAL' FROM historico_bagagem hb2 GROUP BY hb2.ID) h2 ON h2.ID = h.IDESTÁ DANDO ESSE ERRO:/* SQL Error (1054): Unknown column 'h1.HORA_INICIAL' in 'field list' */ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jorge teruya Postado Janeiro 13, 2012 Denunciar Share Postado Janeiro 13, 2012 Tenta ai:select b.NOME_PASSAGEIRO,l.DESCRICAO AS 'LOCAL',DATE(h.DH_MOVIMENTO) AS 'DATA_MOVIMENTO',h1.HORA_INICIAL,h2.HORA_FINAL,TIMEDIFF(h2.HORA_FINAL, h1.HORA_INICIAL) AS 'TEMPO_TOTAL'FROM historico_bagagem hINNER JOIN bagagem b ON b.ID = h.BAGAGEM_H_IDINNER JOIN local l ON l.ID = h.LOCAL_H_IDINNER JOIN (SELECT hb1.ID, MIN(hb1.DH_MOVIMENTO) AS 'HORA_INICIAL'FROM historico_bagagem hb1GROUP BY hb1.ID) h1 ON h1.ID = h.IDINNER JOIN (SELECT hb2.ID, MAX(hb2.DH_MOVIMENTO) AS 'HORA_FINAL'FROM historico_bagagem hb2GROUP BY hb2.ID) h2 ON h2.ID = h.ID Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JRPETROLINA Postado Janeiro 14, 2012 Autor Denunciar Share Postado Janeiro 14, 2012 (editado) RODOU MAS,NOVAMENTE "TEMPO TOTAL" TODOS ZERADOS. QUANDO USA 'SUBTIME' DA RESULTADO 'NULL'.CREATE TABLE `historico_bagagem` ( `ID` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `DH_MOVIMENTO` DATETIME NULL DEFAULT NULL, `LOCAL_H_ID` BIGINT(20) UNSIGNED NOT NULL, `BAGAGEM_H_ID` BIGINT(20) UNSIGNED NOT NULL, PRIMARY KEY (`ID`), INDEX `LOCAL_H_ID` (`LOCAL_H_ID`), INDEX `BAGAGEM_H_ID` (`BAGAGEM_H_ID`), CONSTRAINT `BAGAGEM_H_ID` FOREIGN KEY (`BAGAGEM_H_ID`) REFERENCES `bagagem` (`ID`), CONSTRAINT `LOCAL_H_ID` FOREIGN KEY (`LOCAL_H_ID`) REFERENCES `local` (`ID`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT AUTO_INCREMENT=11 ----------------------------------------------------------- select b.NOME_PASSAGEIRO, c.DESCRICAO AS 'LOCAL', DATE(h.DH_MOVIMENTO) AS 'DATA_MOVIMENTO', h1.HORA_INICIAL, h2.HORA_FINAL, TIMEDIFF(h2.HORA_FINAL, h1.HORA_INICIAL) AS 'TEMPO_TOTAL' FROM historico_bagagem h INNER JOIN bagagem b ON b.ID = h.BAGAGEM_H_ID INNER JOIN local c ON c.ID = h.LOCAL_H_ID INNER JOIN ( SELECT hb1.ID, MIN(hb1.`DH_MOVIMENTO`) AS 'HORA_INICIAL' FROM historico_bagagem hb1 GROUP BY hb1.ID) h1 ON h1.ID = h.ID INNER JOIN ( SELECT hb2.ID, MAX(hb2.`DH_MOVIMENTO`) AS 'HORA_FINAL' FROM historico_bagagem hb2 GROUP BY hb2.ID) h2 ON h2.ID = h.ID; Editado Janeiro 14, 2012 por Denis Courcy Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Janeiro 14, 2012 Denunciar Share Postado Janeiro 14, 2012 'JRPETROLINA',Tenta rodar estas duas queries separadamente e verifique se o valor retornado é o mesmo. Se for, então ou a qualidade de seus dados está ruim ou esta pesquisa está com o pensamento errado e, por isso, não retornará dados com diferença.SELECT hb1.ID, MIN(hb1.`DH_MOVIMENTO`) AS 'HORA_INICIAL' FROM historico_bagagem hb1 GROUP BY hb1.ID SELECT hb2.ID, MAX(hb2.`DH_MOVIMENTO`) AS 'HORA_FINAL' FROM historico_bagagem hb2 GROUP BY hb2.ID; Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
JRPETROLINA
olá pessoal, é o seguinte: foi criado essas tabelas.
TABELA BAGAGEM:
ID
NOME PASSAGEIRO
PESO
caminho_ID
TABELA CAMINHO:
ID
DESCRICAO
TABELA RADIO:
ID
DESCRICAO
QUANT_RECEPTOR
TABELA RECEPTOR:
ID
DESCRICAO
NUMERO_RECEPTOR
radio_ID
TABELA LOCAL:
ID
DESCRICAO
TIPO_LOCAL
receptor_ID
radio_ID
TABELA HISTORICO_BAGAGEM:
ID
DATA_MOV
HORA_MOV
local_ID
bagagem_ID
EU FIZ ESSA QUERY :
select b.NOME_PASSAGEIRO,l.DESCRICAO AS 'LOCAL' ,h.DATA_MOVIMENTO,h.HORA_MOVIMENTO
from historico_bagagem h
inner join local l on l.ID= h.LOCAL_ID
inner join bagagem b on b.`ID` = h.`BAGAGEM_ID`
INNER JOIN(SELECT MAX(hr.`HORA_MOVIMENTO`) - MIN(hr.`HORA_MOVIMENTO`) AS 'TEMPO TOTAL'
FROM historico_bagagem hr)h ON l.ID= h.`LOCAL_ID`
NOME_PASSAGEIRO LOCAL DATA_MOVIMENTO HORA_MOVIMENTO
DIOGENES MORAES CHECK-IN NORTE 6/1/2012 15:48:25
DIOGENES MORAES CHECK-IN NORTE 6/1/2012 15:48:50
DIOGENES MORAES ESTEIRA NORTE INI 6/1/2012 15:49:09
DIOGENES MORAES ESTEIRA NORTE FIM 6/1/2012 15:49:43
LEONARDO FERREIRA CHECK-IN SUDOE 10/1/2012 15:58:06
LEONARDO FERREIRA ESTEIRA SUL INICIO 10/1/2012 15:58:06
LEONARDO FERREIRA ESTEIRA SUL FIM 10/1/2012 15:58:06
LEONARDO FERREIRA RECOLHIMENTO SUL 10/1/2012 15:58:06
LEONARDO FERREIRA CARRO EMBARQ SUL 10/1/2012 15:58:06
MARIA LAICE FERREI CHECK-IN NORTE 12/1/2012 16:00:50
MARIA LAICE FERREI ESTEIRA NORTE INI 12/1/2012 16:00:50
MARIA LAICE FERREI ESTEIRA NORTE FIM 12/1/2012 16:00:50
MARIA LAICE FERREI RECOLHIME NORTE 12/1/2012 16:00:50
MARIA LAICE FERREI CARRO EMBA NORTE 12/1/2012 16:00:50
EU QUERIA QUE RETORNA-SE O NOME, LOCAL DATA, E O TEMPO TOTAL DE CADA BAGAGEM QUE FOI 1° LOCAL ONDE ELE PASSOU ATÉ O ULTIMO.
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.