ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

SQL Server Consulta.

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rastrack
Novato
Novato


Registrado: Segunda-Feira, 27 de Julho de 2015
Mensagens: 70

MensagemEnviada: Dom Out 23, 2016 9:46 pm    Assunto: SQL Server Consulta. Responder com Citação

Pessoal, tenho aqui um sistema de rastreamento e bloqueio de veículos, preciso listar os veículos que estejam sem atualizar há 1 hora ou mais. Tenho as tabelas veiculos, modulos, atualizacoes;

Na tabela atualizações eu tenho os campos datahora(datetime) e idmodulo, na tabela veiculos eu também tenho idmodulo, faço os joins e consigo saber a que veículo está vinculado módulo(rastreador) referente à tal registro de atualização. Abaixo essa view que mostra um pouco da estrutura das tabelas pra ver se ajuda;

Código:
SELECT     A.ID, C.IDCLIENTE, A.TIPOMSG, A.STATUSPOSICAO, A.STATUSGPS, CONVERT(SMALLDATETIME, A.DATAHORA, 108) AS DATAHORA, CONVERT(VARCHAR, A.DATAHORA,
                       103) + ' ' + CONVERT(VARCHAR(8), A.DATAHORA, 108) AS DATAHORAEXIB, A.DATAHORA AS DATAHORAORIGINAL, A.LATITUDE, A.LONGITUDE, A.NUMSATELITES,
                      A.VELOCIDADE, B.ID AS IDMODULO, B.SERIEMODULO, B.TIPO AS TIPORASTREADOR, A.IGNICAO, A.ANTIFURTO, A.BLOQUEADO, A.SAIDAS1, A.SAIDAS2, A.SAIDAS3,
                      A.SAIDAS4, A.ENTRADAS1, A.ENTRADAS2, A.ENTRADAS3, A.ENTRADAS4, A.ALTITUDE, C.PLACA, C.ID AS IDVEICULO, C.IDTIPOVEICULO AS TIPOVEICULO,
                      D.DESCRICAO AS TIPOVEICULODESCRICAO, C.IDENTIFICACAO AS IDENTIFICACAOVEICULO, A.DIRECAO, A.MODELO, A.PANICO, A.VELOCIDADEMAXIMAEXCEDIDA,
                      A.BATERIACARREGANDO, A.FALHABATERIAINTERNA, A.FALHAALIMENTACAOPRINCIPAL, A.MOVENDO, A.TENSAO, A.HODOMETRO, A.IDMOTORISTA,
                      E.NOME AS MOTORISTA, C.ENTRADA1LABEL, C.ENTRADA2LABEL, C.ENTRADA3LABEL, C.ENTRADA4LABEL, C.SAIDA1LABEL, C.SAIDA2LABEL, C.SAIDA3LABEL,
                      C.SAIDA4LABEL, C.ENTRADA1VALON, C.ENTRADA2VALON, C.ENTRADA3VALON, C.ENTRADA4VALON, C.SAIDA1VALON, C.SAIDA2VALON, C.SAIDA3VALON,
                      C.SAIDA4VALON, C.SAIDA1VALOFF, C.SAIDA2VALOFF, C.SAIDA3VALOFF, C.SAIDA4VALOFF, C.ENTRADA1VALOFF, C.ENTRADA2VALOFF, C.ENTRADA3VALOFF,
                      C.ENTRADA4VALOFF, C.ENTRADA1SHOW, C.ENTRADA2SHOW, C.ENTRADA3SHOW, C.ENTRADA4SHOW, C.SAIDA1SHOW, C.SAIDA2SHOW, C.SAIDA3SHOW,
                      C.SAIDA4SHOW, dbo.CONVERTEMINUTOSHORAS(A.HORIMETRO) AS HORIMETROFORMATADO, A.HORIMETRO, A.INDICEPOSICAOMXT, A.NIVELSINALGSM
FROM         dbo.ATUALIZACOES AS A INNER JOIN
                      dbo.MODULOS AS B ON B.ID = A.IDMODULO INNER JOIN
                      dbo.VEICULOS AS C ON B.ID = C.IDMODULO INNER JOIN
                      dbo.TIPOSVEICULO AS D ON D.ID = C.IDTIPOVEICULO LEFT OUTER JOIN
                      dbo.MOTORISTAS AS E ON E.ID = A.IDMOTORISTA
WHERE     (A.STATUSGPS <> 'M')


Preciso montar uma consulta pra listar as placas dos veículos + datahora que estão há 1 hora ou mais sem atualizar.

Alguém sabe por onde eu começo?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Out 26, 2016 1:04 pm    Assunto: Responder com Citação

Boa tarde,

Experimente mais ou menos dessa forma:

Código:
select
    v.IDCLIENTE,
    v.PLACA,
    v.ID AS IDVEICULO,
    v.IDTIPOVEICULO AS TIPOVEICULO,
    max(a.DataHora) as DataHora
from Veiculos as v
inner join Atualizacoes as a
    on a.IdModulo = v.IdModulo
group by
    v.IDCLIENTE,
    v.PLACA,
    v.ID,
    v.IDTIPOVEICULO
having
    max(a.DataHora) <= DATEADD(HOUR, 1, CURRENT_TIMESTAMP)


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB