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

nunopicado

[Resolvido] Filtrar por Alias numa query com Group By

Recommended Posts

nunopicado

Boa noite pessoal

Tenho a seguinte query numa base de dados:

SELECT *,Sum(Quant) AS Stock,
MovStock.ArtigoID AS ArtID,
(SELECT DataDoc FROM LinhasDoc WHERE ArtigoID=ArtID ORDER BY DataDoc LIMIT 1) AS DataInicial

From MovStock
INNER JOIN Products on Products.ArtigoID = MovStock.ArtigoID
WHERE (UsaLotes=1) AND (MovStock.ArtigoID=010)
GROUP BY Lote
ORDER BY DataInicial

O meu problema é: Mostrar só os registos em que a coluna Stock seja maior que 0.

No WHERE não posso por o alias, mas se puser SUM(Quant) no WHERE ou o Stock>0 com o HAVING, dá-me erro de sintaxe.

Alguma ideia de como posso conseguir isto?

Abraço e desde já, obrigado

Nuno Picado

----------------------------------

Deixem estar, obrigado...

Deu-me a luz de repente!

Tenho de ter o HAVING depois do GROUP BY! ;) Fica a info para o próximo que precise!

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Rui Carlos

Penso que outra possível solução (possivelmente menos eficiente, ou então não, devido às optimizações internas), passaria por colocares mais um SELECT à volta desse.

PS: Não conhecia o HAVING :)

Share this post


Link to post
Share on other sites
nunopicado

Eu testei meter a soma como subquery, mas o problema manteve-se.

O HAVING também não posso dizer que conheça. Foi a primeira vez que o usei. Sabia que aceitava o uso de Alias, mas nunca tinha testado.

Quando testei, antes de criar o tópico, meti-o logo a seguir ao WHERE, e cheguei a tentar usá-lo para substituir o WHERE, com todas as condições a serem testadas pelo HAVING. Nada feito, dava sempre erro.

Já depois de criar o tópico lembrei-me de tentar meter o HAVING depois do GROUP BY, apenas com a condição do alias (mantendo o WHERE para o resto), e aí funcionou às mil maravilhas. :)

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.