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 

Duvida com clausula where Firebird? {Resolvido}

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


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Mar 26, 2013 4:22 pm    Assunto: Duvida com clausula where Firebird? {Resolvido} Responder com Citação

Mais uma duvia aqui com select

Fazendo o select assim
Código:
  SELECT C.CODIGO,
       C.NOME,
       SUM( V.VALOR_EM_PRODUTOS + V.VALOR_EM_SERVICOS + V.VALOR_EM_PACOTES ) VALOR_GASTO,
       COUNT(*) QTD_VISITAS,
       SUM( V.VALOR_EM_PRODUTOS + V.VALOR_EM_SERVICOS + V.VALOR_EM_PACOTES ) / COUNT(*) TICKET_MEDIO
  FROM VENDAS V, CLIENTES C
 WHERE V.CODIGO_CLIENTE = C.CODIGO
       and v.codigo_cliente = :codigo
      and v.cancelado is null
         AND V.TIPO IS NULL
 GROUP BY 1,2

Funciona

Ja se eu fizer assim
Código:
  SELECT C.CODIGO,
       C.NOME,
       SUM( V.VALOR_EM_PRODUTOS + V.VALOR_EM_SERVICOS + V.VALOR_EM_PACOTES ) VALOR_GASTO,
       COUNT(*) QTD_VISITAS,
       SUM( V.VALOR_EM_PRODUTOS + V.VALOR_EM_SERVICOS + V.VALOR_EM_PACOTES ) / COUNT(*) TICKET_MEDIO
  FROM VENDAS V, CLIENTES C
 WHERE V.CODIGO_CLIENTE = C.CODIGO
       and v.codigo_cliente = :codigo
      and v.cancelado <> 'Sim'
         AND V.TIPO IS NULL
 GROUP BY 1,2

Não funciona, mesmo tendo o campo CANCELADO = Sim na tabela, não filtra desta forma ai.

Quero garantir que este campo não seja apenas IS NULL mais talvez possa ter = 'Não' também por isso pensei em usar o <> de 'Sim'

Alguem sabe dizer poque não funcinou assim ?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Qua Mar 27, 2013 8:58 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Ter Mar 26, 2013 4:27 pm    Assunto: Responder com Citação

a primeira coisa é colocar um valor default no campo e dar um update nos campos q tiverem null para o valor default.

mas se nao puder fazer isso, eu faco assim:

Código:
and ((v.cancelado IS NULL) OR NOT(v.cancelado = "NAO"))


tb nao descobri pq dessa forma nao funciona:

Código:
 and v.cancelado <> 'Sim'

_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Mar 26, 2013 4:32 pm    Assunto: Responder com Citação

joemil escreveu:
a primeira coisa é colocar um valor default no campo e dar um update nos campos q tiverem null para o valor default.

mas se nao puder fazer isso, eu faco assim:

Código:
and ((v.cancelado IS NULL) OR NOT(v.cancelado = "NAO"))


tb nao descobri pq dessa forma nao funciona:

Código:
 and v.cancelado <> 'Sim'
É vou deixar assim mesmo
Código:
and ((v.cancelado IS NULL) OR (v.cancelado = 'NAO'))


Obrigado Joemil, e se alguém soubler porque da outra forma não funciona eu agradeço.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Qua Mar 27, 2013 7:49 am    Assunto: Responder com Citação

Adriano eu não sei se entendi a sua dúvida,

será que é por causa que no select você esteja utilizando o AND, com isso você quer dizer que se o campo 'cancelado' for diferente de 'Sim' e o tipo for nulo o select é satisfeito.

Se o campo 'cancelado' for igual a 'Sim' e tipo não é nulo, não retorna o select.
Se o campo 'cancelado' for diferente de 'Sim' e tipo não é nulo, não retorna o select.
Se o campo 'cancelado' for igual a 'Sim' e tipo é nulo, não retorna o select.


Joemil escreveu:
and ((v.cancelado IS NULL) OR NOT(v.cancelado = "NAO"))


Então o que o Joemil fez foi que se qualquer uma das expressões for verdadeiro o select é satisfeito. Repare que foi utilizado o 'OR'.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Mar 27, 2013 8:57 am    Assunto: Responder com Citação

Obrigado Pestana, entendi
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9100
Localização: Sinop-MT

MensagemEnviada: Qua Mar 27, 2013 9:07 am    Assunto: Responder com Citação

o problema é q v.cancelado <> 'SIM' nao funciona

por isso fiz assim:

and ((v.cancelado IS NULL) OR NOT(v.cancelado = "NAO"))
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
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