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 

Select complicado

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


Registrado: Segunda-Feira, 20 de Outubro de 2003
Mensagens: 2

MensagemEnviada: Qui Dez 28, 2006 9:44 am    Assunto: Select complicado Responder com Citação

Caros Colegas,

estou com um problema na seguinte query:

select CASE WHEN VP.valor_produto is null THEN P.valor_produto ELSE
VP.valor_produto END AS VALOR1
from ATIVIDADE A INNER JOIN FAZENDA F ON (F.id_fazenda = A.id_fazenda)
INNER JOIN PROPRIETARIO PR ON (PR.id_proprietario = F.id_proprietario)
LEFT JOIN VALORPRODUTO VP ON (PR.id_proprietario = VP.id_proprietario)
RIGHT JOIN PRODUTO P ON (P.id_produto = VP.id_produto)
where A.id_atividade=745
and P.nome_produto='CALCÁRIO DOLOMÍTICO'

onde o objetivo da mesma é verificar se o proprietário referenciado
(pela atividade agrícola e conseqüentemente pela fazenda) possui
um valor de produto personalizado a este, se sim, utiliza esse valor
(campo VP.valor_produto da tab. VALORPRODUTO), caso contrário,
utiliza o valor do campo P.valor_produto da tab. PRODUTO.

o select acima funciona quando a um valor na tab. VALORPRODUTO
relacionado ao produto q está na condição (where), ou seja,
expressa o valor do campo VP.valor_produto, mas se não há
um valor cadastrado ele resulta em null (não traz nenhum registro)
e não empressa o valor do campo P.valor_produto como deveria.

Obs.: Firebird 2.0
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mgrasser
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Fevereiro de 2004
Mensagens: 1189
Localização: São Paulo

MensagemEnviada: Qui Jan 04, 2007 11:38 am    Assunto: Select complicado Responder com Citação

Não faço idéia de por que não funciona o seu select, mas posso sugerir:

1) inclua no select após o valor1, o campo vp.valor_produto e p.valor_produto para ver se os valores deles correspondem ao que vc espera. pode acontecer de p.valor_produto também estar Null ??

2) utilize coalesce no lugar de case

select COALESCE(VP.valor_produto,P.valor_produto) AS VALOR1
from ATIVIDADE A INNER JOIN FAZENDA F ON (F.id_fazenda = A.id_fazenda)
INNER JOIN PROPRIETARIO PR ON (PR.id_proprietario = F.id_proprietario)
LEFT JOIN VALORPRODUTO VP ON (PR.id_proprietario = VP.id_proprietario)
RIGHT JOIN PRODUTO P ON (P.id_produto = VP.id_produto)
where A.id_atividade=745
and P.nome_produto='CALCÁRIO DOLOMÍTICO'
_________________
<font color="#0000FF">
<strong><marquee bgcolor="#FFAD00" behavior="slide" direction="right" width="600">..:: MGrasser ::.. </marquee><marquee bgcolor="#FFAD00" behavior="slide" direction="left" width="600">..:: MGrasser ::.. </marquee></strong>
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