Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wosh1ngton

SELECT com subquery

Recommended Posts

Tenho as seguintes tabelas:

DEPARTAMENTO (cod_depto, descricao, nome)



FUNCIONARIO (cpf, fone, endereco, nome, unome, cod_depto)


REQUISICAO (cod_requisicao, status, data_requisicao, motivo_rejeicao,
            cpf_requisitante,cpf_autoriza)


ITEM_REQUISICAO (quantidade, cod_produto, cod_requisicao)


PRODUTO (cod_produto, ultimo_preco_compra, descricao, estoque, validade, 
         esoque_min, cod_tipo)


CONSUMO_MENSAL (expectativa_consumo, mes_ano, cod_depto, cod_produto)
Preciso responder a seguinte consulta:
Que departamentos solicitaram um tipo de produto em um dado período ?
Depois de muito tentar cheguei até o seguinte ponto:
SELECT DISTINCT d.nome, p.nome, cm.expectativa_consumo 

FROM 
departamento d, produto p, consumo_mensal cm
WHERE cm.expectativa_consumo > ANY
(
SELECT SUM(ir.quantidade) FROM item_requisicao ir, requisicao r 
WHERE ir.cod_requisicao=r.cod_requisicao and r.data_requisicao 
between '20/01/2014' and '10/04/2014' 
GROUP BY (ir.cod_produto,r.cpf_requisitante)
)
AND
cm.mes_ano='04/2014'
AND 
cm.cod_produto=p.cod_produto
AND
d.cod_depto=cm.cod_depto;

embora a subquery retorne os dados que preciso, quando faço a comparação da query externa com a subquery não consigo os dados desejados, acredito que isso se deve ao fato de que a expectativa_consumo é comparada com todos os dados que a subquery retorna, eu preciso que ela seja comparada apenas onde o cpf_requisitante e cod_produto da subquery sejam idênticos ao cod_produto e cod_depto que referencia um cpf_requisitante da query externa.

 

Tentei fazer a comparação citada, mas parece que não é possível fazer isso fora do escopo da subquery.

Alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisa de subqueries, creio, um join simples entre DEPARTAMENTO , FUNCIONARIO , REQUISICAO , ITEM_REQUISICAO e PRODUTO

 

Filtrando Produto e Data (between)

 

Use um Group by ou Distinct para evitar repetições ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas no caso tenho a tabela consumo_mensal que tem expectativas de consumo para cada departamento e para cada produto.

Exemplo:

depto 1, produto 1, mês 4, expectativa 20un.

depto 1, produto 2, mês 4, expectativa 40un.

...

 

Preciso comparar o que foi consumido por cada departamento, por meio da soma dos quantitativos da tabela item_requisicao agrupado por produto e departamento.

 

Como fazer essa comparação sem subconsultas?

Não consegui entender...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua pergunta era ...

 

Que departamentos solicitaram um tipo de produto em um dado período ?

 

 

Deixa eu dar uma pensada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe, na verdade a pergunta é:

Que departamentos solicitaram um tipo de produto em quantidade acima do esperado para um dado período ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um join simples entre DEPARTAMENTO , FUNCIONARIO , REQUISICAO , ITEM_REQUISICAO e PRODUTO
somando e valores e agrupando por mes_ano, cod_depto, cod_produto,
isto monta uma tabela virtual , esta tabela virtual faz join com
CONSUMO_MENSAL (mes_ano, cod_depto, cod_produto)
feito isto compare a soma do agrupamento com expectativa_consumo,

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.