Problema com query em 3 tabelas

Delphi

20/03/2010

Boa tarde!! Tenho 3 tabelas: Itens-Itens de Venda Funcio-Funcionarios   MovConv-Movimentacao de convenio   Estrutura das tabelas   Itens   IDCodigo Descricao Qtde Valor Ticket Data   Funcio   IDFuncio IDEmp Nome   MovConv   IDTicket IDEmp IDFuncio Data   Preciso selecionar todos os itens que foram vendidos à empresa 1 em um determinado período, preciso agrupar por Funcionario e ordenar pelo Nome do funcionario.   Estou tentando esse código mas não estou conseguindo agrupar:  
 
 Sql.Add('Select ITens.IDcodigo,Itens.Descricao,Itens.Ticket,Itens.Data,Itens.Qtde,Itens.Valor, '+
      ' Funcio.IDFuncio,Funcio.Nome '+
      ' from Itens,Funcio where '+
      ' Funcio.IDEmp=:pEmp '+
      ' and Itens.Data in (Select Data from MovConv where Data between :pData and :pData2 and IDEmp=:pEmp )'+
      ' and Itens.Ticket in(Select IdTicket from MovConv where Data between :pData and :pData2 and IDEmp=:pEmp )'+
      ' and Funcio.IDFuncio in(Select IDFuncio from MovConv where Data between :pData and :pData2 and IDEmp=:pEmp )'+
      ' order by Funcio.Nome')

  Existe um item de venda pra um funcionario e 2 para outro funcionario..Logo o resultado deveriam ser 3 registros no total, so q ele esta trazendo 6 registros...3 para cada funcionário os mesmos registros de um vai para o outro. Se usar o Group by ele traz  o mesmo registro para os dois funcionarios    Estou usando Query BDE em tabelas Paradox.   Agradeço a ajuda de todos...
Carlos Bernardo

Carlos Bernardo

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

20/03/2010

tente assim:

Select
  ITens.IDcodigo, Itens.Descricao, Itens.Ticket, Itens.Data, Itens.Qtde, Itens.Valor,
  Funcio.IDFuncio, Funcio.Nome
from
  MovConv, Itens, Funcio
where
  Funcio.IDEmp = MovConv.IDEmp
  and Funcio.IDFuncio = MovConv.IDFuncio
  and Itens.Ticket = MovConv.IDTicket
  and MovConv.IDEmp = :pEmp
  and MovConv.Data between :pData and :pData2
order by
  Funcio.Nome

GOSTEI 0
Carlos Bernardo

Carlos Bernardo

20/03/2010

tente assim:

Select
  ITens.IDcodigo, Itens.Descricao, Itens.Ticket, Itens.Data, Itens.Qtde, Itens.Valor,
  Funcio.IDFuncio, Funcio.Nome
from
  MovConv, Itens, Funcio
where
  Funcio.IDEmp = MovConv.IDEmp
  and Funcio.IDFuncio = MovConv.IDFuncio
  and Itens.Ticket = MovConv.IDTicket
  and MovConv.IDEmp = :pEmp
  and MovConv.Data between :pData and :pData2
order by
  Funcio.Nome

Valeu... Emerson, muito obrigado... funcionou certinho ..
GOSTEI 0
POSTAR