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 

Query do MySQL não roda no SQL Server.

 
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: Sex Set 01, 2017 1:05 am    Assunto: Query do MySQL não roda no SQL Server. Responder com Citação

Pessoal, tenho essa query usada em um banco MySQL, estou tentando de tudo adaptar ela pro SQL Server mas não tá dando certo, pois o SQL Server me força a agrupar todas as colunas selecionadas. Alguém me ajuda a adaptar essa query no SQL Server, ou implementar uma similar?

Código:

SELECT c.name,c.name_fantasy,CONCAT(v.title,' ',v.plaque) AS title,sc.number,sc.iccid,o.title AS carrier,r.sn,r.lat,r.lng,r.date_db,r.date_gps,TIMESTAMPDIFF(HOUR,r.date_db,CURRENT_TIMESTAMP()) as diferenca,r.volt_main,r.speed,r.ign,r.sat_fix,r.sat
FROM   clients c
       JOIN vehicles v
         ON c.id = v.clients_id
       JOIN installations i
         ON v.id = i.vehicles_id
       JOIN simcards sc
         ON sc.id = i.simcards_id
       JOIN operators o
         ON o.id = sc.operators_id
       JOIN trackers t
         ON i.trackers_id = t.id
       JOIN registers r
          ON t.cod = r.sn
JOIN (
   SELECT rr.sn, MAX(rr.id) AS id FROM registers rr GROUP BY sn
) AS L2 ON r.sn = L2.sn AND r.id = L2.id
GROUP BY r.sn
HAVING diferenca >= p_time;


Qualqur ajuda é sempre bem vinda e abraços a todos.
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: Sex Set 01, 2017 10:11 am    Assunto: Responder com Citação

Bom dia,

Não tenho nenhuma experiência com o MySQL, não consegui entender o resultado que essa query retorna.
Você pode postar um exemplo com uma pequena amostra de dados das tabelas e o respectivo resultado esperado?

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos-residencial-casa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Sex Set 01, 2017 10:26 am    Assunto: Responder com Citação

Concordo com o Imex, mas percebi que o seu group by contém apenas um campo, enquanto que ele deveria conter todos.

faz um teste com esse script:
Código:
SELECT c.name,
       c.name_fantasy,
       CONCAT(v.title, ' ', v.plaque) AS title,
       sc.number,
       sc.iccid,
       o.title AS carrier,
       r.sn,
       r.lat,
       r.lng,
       r.date_db,
       r.date_gps,
       TIMESTAMPDIFF(HOUR,r.date_db,CURRENT_TIMESTAMP()) as diferenca,
       r.volt_main,
       r.speed,
       r.ign,
       r.sat_fix,
       r.sat
  FROM clients c
       JOIN vehicles v
         ON c.id = v.clients_id
       JOIN installations i
         ON v.id = i.vehicles_id
       JOIN simcards sc
         ON sc.id = i.simcards_id
       JOIN operators o
         ON o.id = sc.operators_id
       JOIN trackers t
         ON i.trackers_id = t.id
       JOIN registers r
         ON t.cod = r.sn
       JOIN (SELECT rr.sn,
                      MAX(rr.id) AS id
               FROM registers rr
              GROUP BY sn) AS L2
         ON r.sn = L2.sn AND r.id = L2.id
 GROUP BY c.name,
          c.name_fantasy,
          v.title,
          v.plaque,
          sc.number,
          sc.iccid,
          o.title,
          r.sn,
          r.lat,
          r.lng,
          r.date_db,
          r.date_gps,
          r.volt_main,
          r.speed,
          r.ign,
          r.sat_fix,
          r.sat
HAVING diferenca >= p_time;
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