Como fazer isso
select cli.nome,(select dataUltimaVenda from venda where idCliente=cli.idCliente) as dataVenda
from cliente cli
order by dataVenda
Sendo que na terceira linha ele da erro dizendo que nao encontrou a coluna dataVenda?
Como fazer isso
select cli.nome,(select dataUltimaVenda from venda where idCliente=cli.idCliente) as dataVenda
from cliente cli
order by dataVenda
Sendo que na terceira linha ele da erro dizendo que nao encontrou a coluna dataVenda?
Temos muitas situações parecidas aqui.
Resolvemos, quase sempre, desta forma:
SELECT
nome,
dataVenda
FROM
(select
cli.nome as nome,
(select dataUltimaVenda from venda where idCliente=cli.idCliente) as dataVenda FROM cliente cli) ORDER BY dataVenda
Isso deve funcionar.
Ja tinha tendado essa forma, infelizmente isso não funciona com firebird 1.5, que é o banco de dados que estamos usando aqui…
Olá mateusviccari,
A instrução utilizada realmente não funcionará, pois, dataVenda é um alias gerado em tempo de execução. Existem bancos de dados que aceitam esta operação, por mais que ela não siga os padrões SQL.
Tente fazer sua consulta com inner join, agrupando por cliente e última venda.
Abraços.
_ _
Fabiano Abreu
Papo Sql - Um blog com tutoriais, dicas e truques sobre SQL
Por isso que eu não uso firebird, jamais.
eu tambem nunca mais vou usar, mas é que o sistema ja tem quase 10 anos e até migrarmos pra postgres e java vai levar um bom tempo ainda…