Listar Grupo e Sub Grupo de produto

Delphi

15/12/2008

Boa tarde, a todos do forum

Presciso tirar relatorio da seguinte forma : se eu pedir para listar todos os prod. GRUPO 005 ok, mas se eu pedir pra tirar a listagem de todos os prod. do GRUPO 001 q eh o pai do grupo 005, os prod. do grupo 005 nao saem. segue a estrutura das tabelas usada. Utilizo D7 e interbase.

Obrigado.

TABELA produto :

CODPRODUTO
CODGRUPO
DESCRICAO
QUANTIDADE

TABELA grupo :

CODGRUPO
CODPAI
NOME


Walter Faria

Walter Faria

Curtidas 0

Respostas

Pestana_

Pestana_

15/12/2008

não sei se entendi!

é isso que você quer?

select * from produto p inner join grupo g on(p.codGrupo = g.codGrupo)



GOSTEI 0
Walter Faria

Walter Faria

15/12/2008

E isso mesmo , mas tem um problema nisso, por exemplo quero q liste todos os produtos do grupo X e tb tragam nesta lista os sub grupo filhos deste grupo X ( x1, x2, ...)

TBPRODUTO
CODPROD
CODGRUPO
PRODUTO

TBGRUPO
CODGRUPO
CODGRUPOPAI
GRUPO

SE VCS PODEREM ME AJUDAR...

OBRIGADO


GOSTEI 0
Pestana_

Pestana_

15/12/2008

você esta querendo uma relação de mestre-detalhe? aonde ao consultar os registros do produto é retornado em uma outra query os registros do grupo deste produto e outra query com os registros do subGrupo do grupo selecionado!

é isso que você quer? como você deseja fazer?


GOSTEI 0
Walter Faria

Walter Faria

15/12/2008

Obrigado, por estar me ajudando.

Mas seria assim o relatorio

cod produto grupo subgrupo
1 Premiatta racao filhote racao filhote
2 premiatta racao adulto racao adulto


No filtro (GRUPO) do relatorio , iria colocar somente ( racao ) dai me trouxesse esta lista acima. Se no filtro ( GRUPO ) eu colocasse somente FILHOTE iria me trazer assim :

cod produto grupo subgrupo
1 Premiatta racao filhote racao filhote


GOSTEI 0
Pestana_

Pestana_

15/12/2008

with query do
 begin
   close;
   sql.clear;
   sql.add(´select *, (select grupo from tbGrupo ´+
                      ´where g.codGrupoPai is not null ´+
                      ´and codGrupo = g.codGrupoPai) grupoPai ´+
           ´from tbProduto p inner join tbGrupo g on(p.codGrupo = g.codGrupo) ´+
           ´where g.codGrupo = :id´);
   params[0].AsInteger := StrToInt(Trim(edtCodGrupo.Text));
   open;
 end;


depois você adiciona o valor dos campos no relatorio.


GOSTEI 0
Walter Faria

Walter Faria

15/12/2008

Ola, colega baseado no seu SQL, montei a seguinte SQL, so q esta dando erro de INVALID COLUMN REFERENCE;

SelectMateriaPrima.CodMateriaPrima, MateriaPrima.Descricao as MateriaPrima,
SubExtrato.Nome as Unidade, MateriaPrima.Fabricante, MateriaPrima.Estoque, Embalagem.Nome as Embalagem,
(select Nome from Grupo g where g.Pai is not null and codGrupo = g.Pai) as grupoPai,
Sum(PedidoItem.Qtde) as TotalComprado, Sum(PedidoItem.Qtde * MateriaPrima.PesoLiq) as Liquido
From MateriaPrima
Inner Join PedidoItem on PedidoItem.CodProduto = MateriaPrima.CodMateriaPrima
Inner Join Pedido on Pedido.CodPedido = PedidoItem.CodPedido
Inner Join SubExtrato on SubExtrato.CodSubExtrato = MateriaPrima.CodUnidade
Left Join Embalagem on Embalagem.CodEmbalagem = MateriaPrima.CodEmbalagem
inner join Grupo g on MateriaPrima.codGrupo = g.codGrupo
Where Pedido.Data Between :Inicio AND :Final
Group By MateriaPrima.CodMateriaPrima, MateriaPrima.Descricao, SubExtrato.Nome, MateriaPrima.Fabricante, MateriaPrima.Estoque, Embalagem.Nome, Grupo.Nome
Order By MateriaPrima.Fabricante, MateriaPrima.Descricao


GOSTEI 0
POSTAR