JRPETROLINA Posted January 11, 2012 Report Share Posted January 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. Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted January 11, 2012 Report Share Posted January 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. Quote Link to comment Share on other sites More sharing options...
0 JRPETROLINA Posted January 12, 2012 Author Report Share Posted January 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?? Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted January 12, 2012 Report Share Posted January 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 Quote Link to comment Share on other sites More sharing options...
0 JRPETROLINA Posted January 12, 2012 Author Report Share Posted January 12, 2012 (edited) 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 Edited January 12, 2012 by JRPETROLINA Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted January 12, 2012 Report Share Posted January 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" Quote Link to comment Share on other sites More sharing options...
0 JRPETROLINA Posted January 12, 2012 Author Report Share Posted January 12, 2012 ESSES COMANDOS ENGINE=MYISAM, NÃO CONHEÇO.TEM CONFIGURAR ALGUMA COISA?? Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted January 13, 2012 Report Share Posted January 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. Quote Link to comment Share on other sites More sharing options...
0 JRPETROLINA Posted January 13, 2012 Author Report Share Posted January 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' */ Quote Link to comment Share on other sites More sharing options...
0 jorge teruya Posted January 13, 2012 Report Share Posted January 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 Quote Link to comment Share on other sites More sharing options...
0 JRPETROLINA Posted January 14, 2012 Author Report Share Posted January 14, 2012 (edited) 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; Edited January 14, 2012 by Denis Courcy Quote Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted January 14, 2012 Report Share Posted January 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; Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
11 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.