 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
maikiperin Novato

Registrado: Segunda-Feira, 20 de Outubro de 2003 Mensagens: 2
|
Enviada: Qui Dez 28, 2006 9:44 am Assunto: Select complicado |
|
|
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 |
|
 |
mgrasser Colaborador

Registrado: Quinta-Feira, 26 de Fevereiro de 2004 Mensagens: 1189 Localização: São Paulo
|
Enviada: Qui Jan 04, 2007 11:38 am Assunto: Select complicado |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|