Re: [firebase-br] Ordenação por agrupamento
Jeferson Oliveira
jefersonfoliveira em gmail.com
Sáb Jul 15 09:37:06 -03 2006
Não é possível fazer referência ao campo calculado pelo seu nome.
Mas há duas formas de resolver esse problema:
1) Repetir na cláusula order by, o cálculo do campo:
select P.*, (select sum(MV.QUANTIDADE)
from MOVIMENTO_VENDA MV
where MV.COD_PRODUTO=P.COD_PRODUTO) as QUANTIDADE
from PRODUTOS P
order by (select sum(MV.QUANTIDADE)
from MOVIMENTO_VENDA MV
where MV.COD_PRODUTO=P.COD_PRODUTO)
2) Referenciar o campo por sua posição na lista de campos retornado pelo
select. Suponhamos que a tabela produtos possua apenas dois campos: CODIGO e
DESCRICAO, assim o campo QUANTIDADE seria o terceiro campo retornado, então
teríamos:
select P.*, (select sum(MV.QUANTIDADE)
from MOVIMENTO_VENDA MV
where MV.COD_PRODUTO=P.COD_PRODUTO) as QUANTIDADE
from PRODUTOS P
order by 3
O segundo método é mais eficaz, pois não precisa efetuar novamente o
cálculo.
Observe que nos exemplos acima retirei a cláusula group by da subquery,
pois, como ela já está amarrada com a tabela produtos pelo código, não é
necessário agrupar.
Abraço!
Jeferson Oliveira
Mais detalhes sobre a lista de discussão lista