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

nmb

MYSQL Count Query

11 mensagens neste tópico

boas pessoal

Estou a usar o php+mysql e tenho o seguinte problema numa query em mysql:

ao realizar a seguinte query generica

SELECT count(id) FROM `tablex` ORDER BY `blabla` DESC LIMIT 50

esta query retorna-me sempre valores superiores a 50.

a questão é: é possível limitar a contagem fixando valores máximos em "LIMIT 50"?

neste caso mesmo que os dados existentes fossem superiores a 50 ele teria de me retornar 50.

obrigado!

hasta!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a ver a lógica dessa query. Isso só vai retornar uma linha tornado o limit totalmente desnecessario.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas!

imagina que estas a fazer um registo log onde são encontrados 100 dados. mas como tu pretendes mostrar apenas os ultimos 50.

este codigo faz parte da query que te conta a pesquisa actual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isto pode-se resolver com simples instruções if else no php.. mas a minha intenção é perceber pk ñ funciona esta query do mysql

se estou a limitar a pesquisa a 50, pk ele me retorna mais?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se percebi bem, mas o que tu queres então é obter no máximo 50 registos e saber quantos registos é que obtiveste?

Se sim então fazes apenas

select campo From tabela limit 50

E no php é que verificas quantos rows obtiveste.

Se quiseres ter o número junto na query é possivel, mas ficas com redundancia de dados tipo:

Select X, campo
From (
  Select count(*) as X
  From (
    Select campo
    from tabela
    Limit 50
  )
), tabela
Limit 50

Não sei se funciona mas ficas com a ideia, é escusado de dizer que é terrivelmente ineficiente.

isto pode-se resolver com simples instruções if else no php.. mas a minha intenção é perceber pk ñ funciona esta query do mysql

se estou a limitar a pesquisa a 50, pk ele me retorna mais?

Porque o Limit só é aplicado depois do agrupamento. Ou seja, estás a fazer limit 50 a uma query que só retorna uma linha.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok! percebi essa lógica.. sim realmente torna o código muito ineficiente...

ficou a ideia! vou pegar nas dicas!

obrigado pessoal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E não podes usar o TOP ?

Select TOP 50 * from tabela

Não há TOP em mysql, há o limit que é a mesma coisa. E o problema ainda continuava já que não obtia o número de linhas que tinha.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Embora tenham dado algumas soluções o problema está logo no ínicio, porque o LIMIT que fazes limita-te realmente o número de resultados que o MySQL te retornna, mas o count(id) que tu usas vai-te contar todas as linhas da tabela, e vai-te dar sempre o mesmo resultado independentemente do valor LIMIT que apliques. Faz antes assim..


$query = mysql_query("SELECT id FROM `tablex` ORDER BY `blabla` DESC LIMIT 50");

$count = mysql_num_rows($query);

É a variável $count que tu queres  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para colocarem dúvidas existe uma secção interna em cada àrea denominada Dúvidas e Ajudas.

Por favor utilizem essa secção de forma a poupar trabalho aos Moderadores para moverem tópicos.

Obrigado

:P

0

Partilhar esta mensagem


Link 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