Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

contar registros

Estas en el tema de contar registros en el foro de Mysql en Foros del Web. buenas tengo el siguiente query: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código sql: Ver original SELECT estrellas , aes . id_hattrick , nombre             ...
  #1 (permalink)  
Antiguo 26/02/2009, 18:37
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 4 meses
Puntos: 43
contar registros

buenas tengo el siguiente query:
Código sql:
Ver original
  1. SELECT estrellas, aes.id_hattrick, nombre
  2.                   FROM aseh_estrellas AS aes
  3.                   JOIN aseh_equipos AS ae ON aes.id_hattrick = ae.id_hattrick
  4.                   WHERE id_temp='38' AND id_fecha='1'
  5.                   ORDER BY estrellas DESC

que me devuelve el listado ordenado de mayor a menor,hasta ahi todo bien, lo que necesito ahora es que me muestre un campo con la posicion en la que sale, por ejemplo:
la consulta original me devuelve:
estrellas id_hattrick nombre
23 123344 equipo1
22 343434 equipo 2
22 45566 equipo 3
....

lo que busco es que me devuelva
pos estrellas id_hattrick nombre
1 23 123344 equipo1
2 22 343434 equipo 2
3 22 45566 equipo 3

pense que usando un contador interno algo como a=a+1 pero no se como usar variables en las consultas... alguna idea?
desde ya muchas gracias
  #2 (permalink)  
Antiguo 27/02/2009, 07:54
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: contar registros

Lo puedes hacer de la siguiente forma:

Código mysql:
Ver original
  1. set @a =0;
  2. select (@a = @a + 1) as posicion, estrellas, aes.id_hattrick, nombre
  3. FROM aseh_estrellas AS aes JOIN aseh_equipos AS ae ON aes.id_hattrick = ae.id_hattrick WHERE id_temp='38' AND id_fecha='1' ORDER BY estrellas DESC

Un saludo
  #3 (permalink)  
Antiguo 27/02/2009, 13:12
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: contar registros

huesos52:
probe poniendo eso en phpmyadmin y a posicion me lo devuelve como 0 en todas las fila. y otra cosita si pongo el codigo tal cual me lo pasaste en la fucion mysq_query() de php funcionara?

salu2
  #4 (permalink)  
Antiguo 27/02/2009, 14:01
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: contar registros

ponlo sin parentesis...

Código:
SET @a =0;
SELECT @a:=@a+1 as posicion, estrellas, aes.id_hattrick, nombre
FROM aseh_estrellas AS aes JOIN aseh_equipos AS ae ON aes.id_hattrick = ae.id_hattrick WHERE id_temp='38' AND id_fecha='1' ORDER BY estrellas DESC
y en cuanto a php, creo que no tiene ningun problema.

Un saludo.
  #5 (permalink)  
Antiguo 27/02/2009, 14:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 1 mes
Puntos: 360
Respuesta: contar registros

No es problema del parentesis...

Se pone todo en ceros, cuando no le pones los dos puntos(:) en la asignación dentro del select.

hazlo con @a:=@a+1.

Un saludo.
  #6 (permalink)  
Antiguo 27/02/2009, 15:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: contar registros

Destor77,
si no das con la tecla, prueba con esto:
SELECT @row := @row + 1 as línea, estrellas, aes.id_hattrick, nombre FROM aseh_estrellas AS aes, aseh_equipos AS ae, (SELECT @row := 0) r WHERE aes.id_hattrick = ae.id_hattrick AND id_temp='38' AND id_fecha='1' ORDER BY estrellas DESC

No he puesto los alias de las tablas a los campos porque no sé a cuál corresponde cada uno, es decir, a nombre y estrellas.
Pero si te soy sincero, yo prefiero hacer estas cosas con programación. Un pequeño contador en la iteración y ya está.
  #7 (permalink)  
Antiguo 27/02/2009, 16:45
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: contar registros

bueno como dijo huesos nada de 10 el tema es que el paginador que uso no me reconoce las dos sentencia dentro del mismo mysql_query.

Jurena:
habia empezado como vos dijiste pero me muestra mal las posiciones:
http://www.aseh.com.ar/index.php?modules=ranking
  #8 (permalink)  
Antiguo 27/02/2009, 17:13
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: contar registros

Cita:
el tema es que el paginador que uso no me reconoce las dos sentencia dentro del mismo mysql_query.
En todo caso es la versión de MySQL la que no te reconoce subconsultas, porque el paginador solo interpreta la tabla que recibe, pero el MySQL puede que no entienda una subconsulta. ¿Qué versión estás usando?

Si está usando la Vs 5.0 o superior, prueba esto:
Código sql:
Ver original
  1. SELECT @ROW := @ROW + 1 linea, estrellas, id_hattrick, nombre
  2. FROM
  3.    (SELECT
  4.         @ROW := 0,
  5.         estrellas,
  6.         aes.id_hattrick,
  7.         nombre
  8.     FROM aseh_estrellas AS aes, aseh_equipos AS ae
  9.     WHERE aes.id_hattrick = ae.id_hattrick AND id_temp='38' AND id_fecha='1'
  10.     ORDER BY estrellas DESC) AS Tabla1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 28/02/2009, 17:32
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: contar registros

chas gracias ahora si funciono!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:53.