Os 3 maiores preços (SQL)

Delphi

24/03/2003

SQL não é meu forte...

gostaria de uma string SQL que me retornasse o nome dos produtos com os três maiores preços unitários.

aí é onde tá o problema...

como selecionar APENAS os 3 maiores preços em uma lista de preços?.

e ainda por cima não é o preço que é pedido e sim o nome dos produtos correspondentes a esses preços...

Quem pode me dar uma ajuda?

PS.: apenas deve ser usado SQL ANSI, ou seja, nada de usar TOP. :)


Carlos Filho

Carlos Filho

Curtidas 0

Respostas

Okama

Okama

24/03/2003

Vc não pode fazer uma consulta simples e um código para exibir os 3 maiores??

´Select * from tabela order by preco Desc´
Query1.Open;

Showmessage( Query1.FieldByName(´Campo´).asString );
Query1.Next;

Showmessage( Query1.FieldByName(´Campo´).asString );
Query1.Next;

Showmessage( Query1.FieldByName(´Campo´).asString );


GOSTEI 0
Marcelo Saviski

Marcelo Saviski

24/03/2003

[color=blue:e6d1f59a86]select nome from tabela
where (preco = (select max(preco) from tabela)) or
(preco = (select max(preco) from tabela where preco <> (select max(preco) from tabela))) or (preco = (select preco from tabela where preco <> (select max(preco) from tabela where preco <> (select max(preco) from tabela))))[/color:e6d1f59a86]

é uma ganbiarra mas [color=red:e6d1f59a86]talvez[/color:e6d1f59a86] funcione.


GOSTEI 0
Carlos Filho

Carlos Filho

24/03/2003

Vc não pode fazer uma consulta simples e um código para exibir os 3 maiores?? ´Select * from tabela order by preco Desc´ Query1.Open; Showmessage( Query1.FieldByName(´Campo´).asString ); Query1.Next; Showmessage( Query1.FieldByName(´Campo´).asString ); Query1.Next; Showmessage( Query1.FieldByName(´Campo´).asString );


na verdade não tenho nenhuma opção! Isso é um trabalho pra entregar amanha 3ª (25/03). O professor pediu!

Como exemplo nós usamos o banco de dados NorthWind que vem com o Access...


GOSTEI 0
Carlos Filho

Carlos Filho

24/03/2003

[quote:9e2654e097=´Marcelo Saviski´][color=blue:9e2654e097]select nome from tabela
where (preco = (select max(preco) from tabela)) or
(preco = (select max(preco) from tabela where preco <> (select max(preco) from tabela))) or (preco = (select preco from tabela where preco <> (select max(preco) from tabela where preco <> (select max(preco) from tabela))))[/color:9e2654e097]

é uma ganbiarra mas [color=red:9e2654e097]talvez[/color:9e2654e097] funcione.[/quote:9e2654e097]

Testei aqui mas inicialmente nao funcionaou, contudo a dica que o professor deu é bem parecida com seu codigo, vou analizá-lo melhor

Muito obrigado!
:)


GOSTEI 0
Carnette

Carnette

24/03/2003

[quote=´Ðerek Wildstar´ na verdade não tenho nenhuma opção! Isso é um trabalho pra entregar amanha 3ª (25/03). O professor pediu!

Como exemplo nós usamos o banco de dados NorthWind que vem com o Access...


Bah meu bruxo....se, voce está aprendendo programação, independentemente de voce saber sql ou não...voce não tá sendo leal com voce mesmo..pois, ficar pedidno código de programa para apresentar na aula não é legal não....onde fica sua capacidade de consultar em livros e apostilas.....ficar pedindo codigo pronto não lhe auxilia em nada na forma de raciociono....pesquisar é bom, e só aumenta o conhecimento...não me leve a mal....se, voce fose meu aluno e pegase vc fazendo isto o que voce fez aqui...com certeza teria te reprovado....


GOSTEI 0
Anonymous

Anonymous

24/03/2003

SELECT *
FROM (SELECT VP1.*,(SELECT COUNT(*)
FROM (SELECT DISTINCT(QTD_MOEDA) QTD_MOEDA
FROM VALORES_PACOTE VP2) T
WHERE T.QTD_MOEDA > VP1.QTD_MOEDA) QTD
FROM VALORES_PACOTE VP1) TUDO
WHERE QTD < 7
ORDER BY 4 DESC

tabela
valores_pacote

coluna qtd_moeda


[]´s


GOSTEI 0
Carlos Filho

Carlos Filho

24/03/2003

[quote=´Ðerek Wildstar´ na verdade não tenho nenhuma opção! Isso é um trabalho pra entregar amanha 3ª (25/03). O professor pediu! Como exemplo nós usamos o banco de dados NorthWind que vem com o Access...


Bah meu bruxo....se, voce está aprendendo programação, independentemente de voce saber sql ou não...voce não tá sendo leal com voce mesmo..pois, ficar pedidno código de programa para apresentar na aula não é legal não....onde fica sua capacidade de consultar em livros e apostilas.....ficar pedindo codigo pronto não lhe auxilia em nada na forma de raciociono....pesquisar é bom, e só aumenta o conhecimento...não me leve a mal....se, voce fose meu aluno e pegase vc fazendo isto o que voce fez aqui...com certeza teria te reprovado....


Amiguinho, não precisa se ´arretar´ por causa da minha atitude...
não é nada para nota, muito menos algo que me deixará burro ou malvisto...

você mesmo disse com outras palavras que eu deveria consultar. Foi o que eu fiz: consultei seu fórum! vc deve estear orgulhoso pois é moderador (ou dono, sei lá) de um sistema eficiente de aprendizado, pois eu nao pedi a resposta em si, eu quis aprender, E APRENDI!

agradeço a Marcelo Saviski por ter me dado a luz que eu precisava. Acho que num universo de 8 questões de arrancar o couro que o professor passou, pedir ajuda em uma não é nenhum sacrilégio, VOCÊ NÃO ACHA???


GOSTEI 0
POSTAR