Como trazer o resultado correto neste select

Firebird

28/07/2011

Pessoal preciso trazer o resultado de todos serviços executados apenas por profissionais que estejam ativos
Mais o select que montei não esta fazendo isso

Vejam como fiz
select
  c.*,
  r.nome
from
  clientes c,
  relatorios_conf r
where
  c.codigo not in(select
                    vendas.codigo_cliente
                  from
                    vendas, vendas_itens
                  where
                    data_hora between :dt1 and :dt2
                  and
                    vendas.codigo = vendas_itens.codigo
                  and
                    exists
                    (select profissionais.codigo
                       from profissionais
                     where
                       vendas_itens.codigo_titular = profissionais.codigo
                     and
                       profissionais.ativo = 'Sim')
                  and
                    vendas_itens.apelido_titular in (:P))
  and
  c.ativo = 'Sim'
order by
  c.codigo


Firebird 1.5
Adriano Dolce

Adriano Dolce

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

28/07/2011

você quer listar os serviços ou os cliente?

outra coisa: como você está relacionando as tabelas clientes e relatorios_conf ?

tente assim:

select
    *
from
    vendas v
inner join
    vendas_itens vi on vi.codigo = v.codigo
inner join
    profissionais p on p.codigo = vi.codigo_titular and p.ativo = 'Sim'
inner join
    clientes c on c.codigo = v.codigo_cliente
where
    v.data_hora between :dt1 and :dt2

GOSTEI 0
Adriano Dolce

Adriano Dolce

28/07/2011

você quer listar os serviços ou os cliente?

outra coisa: como você está relacionando as tabelas clientes e relatorios_conf ?

tente assim:

select
    *
from
    vendas v
inner join
    vendas_itens vi on vi.codigo = v.codigo
inner join
    profissionais p on p.codigo = vi.codigo_titular and p.ativo = 'Sim'
inner join
    clientes c on c.codigo = v.codigo_cliente
where
    v.data_hora between :dt1 and :dt2


Bom dia.
Primeira pergunta: Quero listar todos os clientes que executaram os serviços, mais com o profissional que esteja ATIVO, se o profissional não estiver mais ativo não precisa listar... Obs: o IN ai é que no meu filtro preciso montar com seleções dos profissionais que aparecem no listbox mesmo estando inativo ele aparece, porém se o mesmo entrar na lista do IN deve ser ignorado, caso seja possível. (Foi o que pediram para eu fazer)

Segunda pergunta: Este relatorios_conf não precisa de relacionamento pq tem apenas um arquivo. Serve apenas para o cabeçalho de relatorios.

Obrigado.
GOSTEI 0
POSTAR