Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
iniciante

filtrar linha em sql

Recommended Posts

iniciante

boas pessoal. eu tenho este select que esta a ir buscar dados a 2 tabelas diferentes:

select local_paragem.nome as "Destino mais utilizado", count(etapa.destino) as Numero_de_paragens
from etapa, local_paragem
where etapa.destino =  local_paragem.id  
group by local_paragem.nome
order by Numero_de_paragens desc

e tem como resultado o seguinte:

Destino mais utilizado          NUMERO_DE_PARAGENS   

----------------------------------

coimbra                                14                   

lisboa                                  5                     

porto                                    3                     

barcelona                            3                     

Lyon                                    2                     

albufeira                              2                     

faro                                      2                     

Paris                                    1                     

madrid                                1                     

valencia                              1           

a minha duvida é: como é que eu com aquele select posso fazer aparecer a 1 linha da solução, ou seja, aquela em que o numero de paragens é maior??         


RC

Share this post


Link to post
Share on other sites
M6

Só queres mostrar a primeira linha na query, é isso?

Se sim, qual é a base de dados?


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
iniciante

sim..quero mostrar sempre aquela que aparece o maior numero de paragens que neste caso é o que esta na primeira linha. a base de dados é oracle


RC

Share this post


Link to post
Share on other sites
M6

Em Oracle usas ROWNUM na cláusula Where. O RowNum é um contador/identificador de linhas do resultado/cursor.

Podes ver mais informação aqui: http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
iniciante

sim eu ja tenha feito isso

--o local de paragem mais vezes utilizado como destino--
select local_paragem.nome as "Destino mais utilizado", count(*) as Numero_de_paragens 
from etapa, local_paragem
where etapa.destino =  local_paragem.id and rownum=1
group by local_paragem.nome
order by Numero_de_paragens desc

so que o numero de paragens vai aparecer 1 em vez de 14 =s


RC

Share this post


Link to post
Share on other sites
M6

Tens de filtrar o resultado final e não a query original.

Experimenta assim:

Select * 
from (
select local_paragem.nome as "Destino mais utilizado", count(*) as Numero_de_paragens
from etapa, local_paragem
where etapa.destino =  local_paragem.id
group by local_paragem.nome
order by Numero_de_paragens desc
)
where rownum=1

Isto deve funcionar, embora possa haver formas mais inteligentes de o fazer.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.