Ir para conteúdo
Fórum Script Brasil
  • 0

Query por tempo total


JRPETROLINA

Pergunta

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

  • 0

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.id

Nã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.

Link para o comentário
Compartilhar em outros sites

  • 0

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.id

Nã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??

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

  • 0

todos os campos eu alterei "TIME" E "DATE" PARA "TIMESTAMP"(19)!!!! OBS: NOTE OS TEMPOS IGUAIS DE INICIAL E FINAL

NOME_PASSAGEIRO LOCAL DATA_MOVIMENTO HORA_INICIAL HORA_FINAL TEMPO_TOTAL

DIOGENES 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:00

DIOGENES 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:00

DIOGENES 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:00

DIOGENES 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:00

DIOGENES 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:00

LEONARDO 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:00

LEONARDO 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:00

LEONARDO 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:00

LEONARDO 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:00

LEONARDO 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:00

LEONARDO 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 por JRPETROLINA
Link para o comentário
Compartilhar em outros sites

  • 0

'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"

Link para o comentário
Compartilhar em outros sites

  • 0
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.

Link para o comentário
Compartilhar em outros sites

  • 0

ESTOU USANDO A IDE HeidiSQL 6.0.0.3603

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,

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 h

INNER JOIN bagagem b ON b.ID = h.BAGAGEM_H_ID

INNER JOIN local l ON l.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) hl ON hl.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

ESTÁ DANDO ESSE ERRO:

/* SQL Error (1054): Unknown column 'h1.HORA_INICIAL' in 'field list' */

Link para o comentário
Compartilhar em outros sites

  • 0

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 h

INNER JOIN bagagem b ON b.ID = h.BAGAGEM_H_ID

INNER JOIN local l ON l.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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Denis Courcy
Link para o comentário
Compartilhar em outros sites

  • 0

'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;

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...