[firebase-br] Select retornando qdte excedente de registros

paulosxs Yahoo! paulosxs em yahoo.com.br
Ter Set 18 15:02:57 -03 2007


A causa mais provável é que exista uma relação 1 para N entre a tabela 
principal e alguma tabela do JOIN. Se for esse o caso, é necessária uma 
alteração na query. Entre as soluções possíveis poderíamos citar a 
referência a campos por uma subquery ou checar a tabela em um EXISTS em 
vez de em um JOIN.


HPensador escreveu:
> Boa tarde Colegas!
>
> O select abaixo (deveria retornar 21 registros) porém qdo executo o
> mesmo no IBExpert tenho como retorno 200 registros, o que há de errado
> para tal situação.  Sds, HPensador
>
> select distinct c.nome as cli,
>        nc.data_contato,
>        nc.data_prox_contato,
>        f.apelido as vendedor,
>        (case nc.tipo_contato
>           when 'V' then 'Venda'
>           when 'C' then 'Cobrança'
>           when 'M' then 'Manutenção'
>           when 'T' then 'Contato telefônico'
>        end) as tipo_contato,
>        d.descricao as dpto,
>        cd.responsavel,
>        (case nc.demonstracao
>           when 'S' then 'Sim'
>           when 'N' then 'Não'
>        end) as demonstracao,
>        nc.data_demonstracao,
>        nc.descricao,
>        s.descricao as sist,
>        (case nc.proposta
>           when 'S' then 'Sim'
>           when 'N' then 'Não'
>        end) as proposta,
>        nc.proposta_data,
>        (case nc.contrato
>           when 'S' then 'Sim'
>           when 'N' then 'Não'
>        end) as efetivacao,
>        nc.data_contrato
> from negociacao_contato nc
> <<<<----------------------------------------------Nesta tabela só
> existe 21 reg do vendedor de cod. 6
>   join negociacao n on (n.cod_negociacao = nc.cod_negociacao)
>   join cliente c on (c.cod_cliente = nc.cod_cliente)
>   join cliente_departamento cd on (cd.cod_cliente = nc.cod_cliente)
>   join departamento d on (cd.cod_departamento = nc.cod_departamento)
>   join funcionario f on (f.matricula = n.cod_vendedor)
>   join sistema s on (s.cod_sistema = nc.cod_sistema)
> where n.cod_vendedor = '6'
> order by f.apelido
>
>   





Mais detalhes sobre a lista de discussão lista