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

Ayuda con consulta(numeros correlativos)

Estas en el tema de Ayuda con consulta(numeros correlativos) en el foro de Mysql en Foros del Web. Buenas! tengo la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT alumnos.codigoa , alumnos.nombre , alumnos.apellido , @num := @num + 1 b FROM ...
  #1 (permalink)  
Antiguo 26/01/2011, 12:55
 
Fecha de Ingreso: junio-2009
Mensajes: 26
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda con consulta(numeros correlativos)

Buenas! tengo la siguiente consulta

Código MySQL:
Ver original
  1. SELECT alumnos.codigoa,alumnos.nombre,alumnos.apellido, @num:=@num+1 b FROM alumnos INNER JOIN matricula ON
  2. (matricula.codigoa = alumnos.codigoa),(SELECT @num:=0) d  WHERE matricula.grado LIKE '$grado' and matricula.seccion LIKE '$seccion'
  3. and matricula.especialidad LIKE '$especialidad' ORDER BY alumnos.apellido ASC

lo que hace es sacarme un campo con numeros correlativos

Cuando lo ejecuto en la pagina PHP, Me funciona PERO los numeros me los lanza DESORDENADOS, y intento con diferentes campos, y actualizo y siempre me los tira DESORDENADOS..

ahora, cuando ejecuto la consulta en el phpmyadmin la primera vez me lo tira Desordenados, pero cuando vuelvo a ejecutar la misma consulta ya me los ordena!, y cuando reviso la pagina PHP ya me los lanza ordenados como si nada!

y yo sin cambiar nada del codigo de la consulta, asi por arte de magia!

alguna opinion??

Mi base de datos esta en INNODB
  #2 (permalink)  
Antiguo 27/01/2011, 04:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Ayuda con consulta(numeros correlativos)

Por que no haces que sea PHP quien te numere los alumnos.... si usas ORDER BY alumnos.apellido ASC serà por que los quieres ordenados alfabeticamente y además numerado correlativamente, pues en el bucle que hace la impresión pon un numerador y listos total ese numerador no se guarda en ninguna parte...

Si no sabes como muestra como estas haciendo la impresion de los datos y te indico como hacerlo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 27/01/2011, 05:10
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: Ayuda con consulta(numeros correlativos)

Para que funcione, el orden debe ser anterior a la numeración. ya que la numeración va generándose a medida que los registros van siendo leídos y eso está determinado por el WHERE y no por el ORDER BY.
En tu contexto, incluso, no se necesita poner un JOIN (trata de no usar la coma, trae más problemas que ventajas) para inicializar la variable, porque como no puedes sumarla en ese punto, da lo mismo ponerla como campo del SELECT que en un JOIN.
La ida sería:
Código MySQL:
Ver original
  1.   (@num:=@num+1) item,
  2.   codigoa,
  3.   nombre,
  4.   apellido
  5.   (SELECT
  6.     A.codigoa,
  7.     A.nombre,
  8.     A.apellido,
  9.     @num:=0
  10.   FROM
  11.     alumnos A INNER JOIN matricula M ON A.codigoa = M.codigoa
  12.     A.grado LIKE '$grado'
  13.     AND
  14.     A.seccion LIKE '$seccion'
  15.     AND
  16.     A.especialidad LIKE '$especialidad'
  17.   ORDER BY alumnos.apellido ASC) T;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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 00:10.