Consulta entre tres tabelas
Gostaria de criar uma consulta entre três tabelas que me fornecesse
o total vendido de cada produto em um determinado período de tempo: __/__/____ a __/__/____.
uso as seguintes tabelas:
tbpedidoitem1, tbpedidoitem2 e tbpedidoitem3 todas com a mesma estrutura:
...
data
n. pedido
codigo do produto
quantidade
...
uso banco mysql com ClientDataSet.
agradeço a ajuda de todos.
:wink:
o total vendido de cada produto em um determinado período de tempo: __/__/____ a __/__/____.
uso as seguintes tabelas:
tbpedidoitem1, tbpedidoitem2 e tbpedidoitem3 todas com a mesma estrutura:
...
data
n. pedido
codigo do produto
quantidade
...
uso banco mysql com ClientDataSet.
agradeço a ajuda de todos.
:wink:
Aflsilva
Curtidas 0
Respostas
Paulo_amorim
16/01/2004
Olá
Aflsilva, tente especificar melhor a estrutura.
Qual a diferença entre as 3 tabelas?
Como elas estão relacionadas?
Assim quem sabe seja mais facil explicar
Aflsilva, tente especificar melhor a estrutura.
Qual a diferença entre as 3 tabelas?
Como elas estão relacionadas?
Assim quem sabe seja mais facil explicar
GOSTEI 0
Aroldo Zanela
16/01/2004
Colega,
Coloque o código abaixo na propriedade SQL:
Agora basta passar os parâmetros ao objeto de acesso que está utilizando para obter os resultados.
Coloque o código abaixo na propriedade SQL:
SELECT SUM(quantidade) AS total FROM tbPedidoItem1 WHERE data BETWEEN :inicio AND :termino GROUP BY codigo do produto UNION ALL SELECT SUM(quantidade) AS total FROM tbPedidoItem2 WHERE data BETWEEN :inicio AND :termino GROUP BY codigo do produto UNION ALL SELECT SUM(quantidade) AS total FROM tbPedidoItem3 WHERE data BETWEEN :inicio AND :termino GROUP BY codigo do produto ORDER BY codigo do produto
Agora basta passar os parâmetros ao objeto de acesso que está utilizando para obter os resultados.
GOSTEI 0
Aflsilva
16/01/2004
Paulo, as tres tabelas nao tem ligacao uma com a outra. E que eu as utilizo uma para cada terminal de venda. Espero ter sido claro.
GOSTEI 0
Aflsilva
16/01/2004
Amigos, estou tentando fazer da seguinte maneira:
with fdm.query1 do
begin
Close;
commandtext :=
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem1´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´
UNION ALL
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem2´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´;
UNION ALL
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem2´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´;
end;
Espero que entendam e me ajudem.
Obridado.
with fdm.query1 do
begin
Close;
commandtext :=
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem1´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´
UNION ALL
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem2´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´;
UNION ALL
´select (codigo) as Código, (nome)as Produto, sum(qtd) as Vendido from tbpedidoitem2´ +
´where data >= ´´ + st2 + ´´ and data <= ´´ + st4 + ´´ and operacao =´P´ group by codigo, nome order by vendido desc´;
end;
Espero que entendam e me ajudem.
Obridado.
GOSTEI 0
Aroldo Zanela
16/01/2004
Colega,
Order by deve ficar apenas no último select. No entanto, após o melhor detalhamento de sua questão, vejo que esta não é a solução adequada, pois haverá repetições de totais por código de produto. Acho que será necessário consolidar as tabelas numa única (temp table) para obter o resultado correto.
Order by deve ficar apenas no último select. No entanto, após o melhor detalhamento de sua questão, vejo que esta não é a solução adequada, pois haverá repetições de totais por código de produto. Acho que será necessário consolidar as tabelas numa única (temp table) para obter o resultado correto.
GOSTEI 0
Aflsilva
16/01/2004
Aroldo, voce poderia me dar um exemplo de como eu faria isso com as tres tabelas? Nunca usei temp table. Nao sei como fazer. Ficaria muito agradecido com a sua ajuda.
GOSTEI 0