Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

iniciante

filtrar linha em sql

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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."

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.