• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

_Rest_

ajuda numa query SQL

10 mensagens neste tópico

Boas,

Eu tenho a seguinte query

SELECT Armazens.designação, Stocks.quantidade_fisica,Reservas.quantidade, Peças.part_number
FROM (Peças INNER JOIN (Armazens INNER JOIN Reservas ON Armazens.cod_armazem = Reservas.cod_armazem) ON Peças.cod_artigo = Reservas.cod_artigo) INNER JOIN Stocks ON (Stocks.cod_armazem = Reservas.cod_armazem) AND (Stocks.cod_artigo = Reservas.cod_artigo) AND (Peças.cod_artigo = Stocks.cod_artigo) AND (Armazens.cod_armazem = Stocks.cod_armazem) 
WHERE Peças.part_number LIKE '" & part_number & "'

Como é que eu somo a Reservas.quantidade se o Peças.part_number for igual a minha variavel & part_number & e se Armazem.designação for o mesmo.

Tipo em vez de aparecer

Designação  quantidade_fisica  quantidade  part_number

Armazem1          30                    5                324

Armazem1          30                    10                324

Aparecer

Designação  quantidade_fisica  quantidade  part_number

Armazem1          30                    15                324

Ou se existir outro armazem

Designação  quantidade_fisica  quantidade  part_number

Armazem1          30                    15                324

Armazem2          50                    10                324

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso é um Sum:

select Desig, SUM(Quant) as Soma, Number, QuantFisica

from Produtos

group by Desig, Number, QuantFisica

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então se poderes aplicar essa func nessa query correctamente, agradecia.

Já tentei usar o SUM(Reservas.quantidade) as quantidade,...

Mas dá erro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso não funciona. Como indiquei no post antes, já coloquei SUM(Reservas.quantidade) as quantidade, ...

Dá sempre erro a dizer "Tentou executar uma consulta que não inclui a expressão especificada '(nome do primeiro campo neste caso Designação)' como parte da função de agregação"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais uma duvida, como é que defino o resultado do SUM na clausula WHERE

tipo WHERE Stocks.quantidade_fisica < (Soma(valor do do SUM) + Peças.Stock_minimo)

Eu quando fiz o SUM defini como Soma

SUM(Reservas.quantidade) as SOMA

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

select * from
(select Desig, SUM(Quant) as Soma, Number, QuantFisica
from Produtos
group by Desig, Number, QuantFisica) t
where t.Soma < VALOR_QUALQUER

ou então assim:

select Desig, SUM(Quant) as Soma, Number, QuantFisica
from Produtos
group by Desig, Number, QuantFisica
having  VALOR_QUALQUER > SUM(Quant)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usei com o HAVING. Ficou a funcionar perfeitamente. Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, com o having fica mais apresentável.

Provavelmente até mais eficiente por só fazer um select, mas isso já n garanto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora