GARANTIR DESCONTO

Fórum Consulta entre tres tabelas #206877

16/01/2004

0

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:


Aflsilva

Aflsilva

Responder

Posts

16/01/2004

Paulo_amorim

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


Responder

Gostei + 0

16/01/2004

Aroldo Zanela

Colega,

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.


Responder

Gostei + 0

16/01/2004

Aflsilva

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.


Responder

Gostei + 0

16/01/2004

Aflsilva

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.


Responder

Gostei + 0

16/01/2004

Aroldo Zanela

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.


Responder

Gostei + 0

16/01/2004

Aflsilva

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar