Problema com query em 3 tabelas
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:
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...
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')
Carlos Bernardo
Curtidas 0
Respostas
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
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
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 ..
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