Em 31 de agosto de 2012 22:06, Euler Taveira <[email protected]> escreveu:
(corte)
> Não. Porque do ponto de vista da execução, a consulta acima não faz o menor
> sentido. A ordem natural das coisas diz que primeiro os dados são filtrados
> pelas condições informadas na cláusula WHERE e *depois* eles são projetados
> (aka as colunas são escolhidas); trocando em miúdos, "CampoC" não existe ao
> ser executada a condição informada na cláusula WHERE.

E não faz sentido mesmo. Este tipo de truque existe em outros SGBDs
gambiarrentos - no ponto de vista da implementação SQL. Querem
facilitar mas na verdade acabam transformando o código SQL em uma
grande torre de Babel com suas "extensões".

Seu problema pode ser resolvido de duas formas:

1)
SELECT table_alias.CampoC
FROM
   (
   Select (CampoA + CampoB) as CampoC
   From Tabela
   ) table_alias
WHERE table_alias.CampoC = XValor

Onde "table_alias" é o nome que você quiser. Bem, nem tanto... há
limites (não ter espaços, não começar com números, não ser uma palavra
reservada do PostgreSQL...)

Ou simplesmente:

2)
Select (CampoA + CampoB) as CampoC
>From Tabela
Where (CampoA + CampoB) = XValor

Não sei dizer qual seria mais performática, mas eu prefiro a primeira opção.


-- 
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a