Os 3 maiores preços (SQL)
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. :)
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
Curtidas 0
Respostas
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 );
´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
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.
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
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
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!
:)
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
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...
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
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
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
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