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 

Dúvida SQL (MYSQL)

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


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Nov 28, 2018 9:06 am    Assunto: Dúvida SQL (MYSQL) Responder com Citação

opa pessoal, bom dia, estou com uma dúvida em uma SQL:

Tenho uma SQL q me mostra os valores totais de venda por hora, só que ela só me retorna as horas das quais existem movimento, óbvio kkkkk, só que eu queria q me retornasse o valor 0 caso não haja movimento nesse horário, exemplo:

00:00h - R$ 0,00
01:00h - R$ 0,00
02:00h - R$ 15,00
03:00h - R$ 0,00
04:00h - R$ 105,00

e assim sucessivamente.

a sql q eu uso hj é essa:

select COUNT(COD), SUM(VALOR), TIME_FORMAT(CAST(DATAHORA as Time), '%H:00') as HORA
from movimento
WHERE (movimento.DATAHORACONCLUSAO BETWEEN '2018-11-26 00:00:00' AND '2018-11-26 23:59:59')
group by TIME_FORMAT(CAST(HORA as Time), '%H:00')
order by TIME_FORMAT(CAST(HORA as Time), '%H:00')

agradeço desde já a ajuda.
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 Nov 28, 2018 10:03 am    Assunto: Responder com Citação

Bom dia,

Não tenho experiência com o MySQL mas acho que uma alternativa seria criar uma tabela com os horários para poder fazer um Join com o resultado dessa query que você já tem. Ex:

Código:
select
    *
from Horarios as h
left join
(
    select COUNT(COD), SUM(VALOR), TIME_FORMAT(CAST(DATAHORA as Time), '%H:00') as HORA
    from movimento
    WHERE (movimento.DATAHORACONCLUSAO BETWEEN '2018-11-26 00:00:00' AND '2018-11-26 23:59:59')
    group by TIME_FORMAT(CAST(HORA as Time), '%H:00')
    order by TIME_FORMAT(CAST(HORA as Time), '%H:00')

) as m on m.Hora = h.Hora


Espero que ajude


Editado pela última vez por imex em Ter Mar 21, 2023 3:30 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
grsoft
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 10 de Abril de 2006
Mensagens: 107

MensagemEnviada: Qua Nov 28, 2018 12:31 pm    Assunto: Responder com Citação

meu amigo, mais uma vez MUITO obrigado.

só fiz uma alteração criando uma tabela virtual com os horários, no final deu tudo certo....

imex escreveu:
Bom dia,

Não tenho experiência com o MySQL mas acho que uma alternativa seria criar uma tabela com os horários para poder fazer um Join com o resultado dessa query que você já tem. Ex:

Código:
select
    *
from Horarios as h
left join
(
    select COUNT(COD), SUM(VALOR), TIME_FORMAT(CAST(DATAHORA as Time), '%H:00') as HORA
    from movimento
    WHERE (movimento.DATAHORACONCLUSAO BETWEEN '2018-11-26 00:00:00' AND '2018-11-26 23:59:59')
    group by TIME_FORMAT(CAST(HORA as Time), '%H:00')
    order by TIME_FORMAT(CAST(HORA as Time), '%H:00')

) as m on m.Hora = h.Hora


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