Jump to content
Fórum Script Brasil
  • 0

Query por tempo total


JRPETROLINA

Question

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

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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

Edited by JRPETROLINA
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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;

Edited by Denis Courcy
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...