Ver Mensaje Individual
  #13 (permalink)  
Antiguo 28/02/2009, 18:21
Avatar de gnzsoloyo
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: FAQ's de MySQL

Pregunta: ¿Cómo numerar secuencialmente una consulta, sin usar PK?
Respuesta:
Numerar dinámicamente con variables de usuario. Ocasionalmente alguien realiza una consulta a una tabla y por cuestiones de comodidad quiere que los registros obtenidos sean numerados, pero la tabla o no tiene ID autonumérico o bien el mismo tiene "huecos" en la numeración o al menos números faltantes.

Bueno, para hacer que MySQL numere en una columna en forma directa una tabla recuperada de una consulta hay que usar una variable de tipo global y realizar la consulta como subconsulta, de esta forma:
Código sql:
Ver original
  1. SELECT
  2.     (@REG := @REG + 1) Linea,
  3.     Campo1,
  4.     Campo2,
  5.     Campo3
  6. FROM
  7.     (SELECT
  8.         @REG :=0,
  9.         Campo1,
  10.         Campo2,
  11.         Campo3
  12.     FROM Tabla1) Tabla2;

Debe forzosamente hacer la definición de la variable global dentro de la subconsulta para que la misma pueda existir, sin lo cual el resultado de la columna Linea se vuelve NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 18/04/2010 a las 07:35