[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