Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Consulta Php + MySql, enumerar filas de una select (http://www.forosdelweb.com/f21/consulta-php-mysql-enumerar-filas-select-275900/)

sir_reo 02/03/2005 12:39

Consulta Php + MySql, enumerar filas de una select
 
Saludos a TODOS:

Tengo un problema, necesito hacer los siguiente

Tengo una tabla con las siguientes columnas
SELECT l_poder, i_usrid FROM tl_user ORDER BY l_poder DESC

el resultado de esta consulta debo almacenarla en otra tabla (tl_estadistica), esta tabla es de
estadistica , por lo tanto almacenara esta consulta diariamente (1 vez por dia).


Mi problema es que debo ponerle una columna que me indique el lugar obtenido en la consulta.
(como un ranking, el cual debo registrarlo en la tabla indicada)

contenidad de la tabla : tl_estadistica
insert into tl_estadistica (l_lugar, l_poder, i_usrid, d_fecha)

Ejemplo del contenido que tendria la tabla tl_estadistica
1 40000 123 1/1/2005
2 39000 223 1/1/2005
3 38000 253 1/1/2005
4 37000 112 1/1/2005
5 36000 54 1/1/2005
6 30000 1 1/1/2005
7 28000 455 1/1/2005
8 25000 678 1/1/2005
9 24000 14 1/1/2005
10 10000 405 1/1/2005

1 28000 455 2/1/2005
2 39068 223 2/1/2005
3 38054 253 2/1/2005
4 37034 112 2/1/2005
5 56000 123 2/1/2005
6 36345 54 2/1/2005
7 33544 1 2/1/2005
8 10003 405 2/1/2005
9 25454 678 2/1/2005
10 24054 14 2/1/2005



Esto debo hacerlo eficientemente y en el menor tiempo posible, que no consuman tanto tiempo y recursos.

utilizando la sentencia :
Insert ... Select ...



(la alternativa de obtener primero todos los registro en PHP,
luego con una variable contador valla insertando 1 registro por uno: ESTA DESCARTADA)



Se los agradeceria mucho a todos si me ayudan , o me indique como seria posible esto.

Vice 03/03/2005 03:03

Según pone en la documentación de mysql, con las tablas myisam puedes hacer lo que quieres por medio de un campo auto_increment, si el campo forma parte del índice y es el segundo campo.
Lee esta página
del manual de mysql que te puede ayudar.
Un saludo.

sir_reo 03/03/2005 11:47

lo que busco
 
primero gracias por responder.

Vi lo que me indicas y resulto ser algo parecido a lo que buscaba, ya que el autoincrement asignara un numero secuencial la primera vez.
pero para la segunda vez que se realize el proceso partira del ultimo asignado.

Sin embargo, la columna que debe ser secuencial "l_lugar" siempre debera partir de 1, cada vez que se proceso la estadistica. (manteniendo los datos de los procesos anteriores).

1° proceso
1
2
3
4
5

2° proceso
1
2
3
4
5
6
7
8
9

3°proceso
1
2
3
4
5



pero, al parecer esto se arregla dejando la columna autoincremental,
y al finalizar el proceso volver asignar el autoincremental a 0.



Se agradece la ayuda prestada Vice

sir_reo 03/03/2005 12:02

de nuevo
 
tuve que declarar la columna como indice.
esto me obliga cada vez que defino una columna como auto_incremental-

esto en la practica no me sirve y se esta sobrecargado esta tabla con un indice que no sera utilizado.
esto puede mejorarse??? existe alguna otra forma de realizar lo que pido originalmente?




saludos.

Vice 04/03/2005 02:05

Si esta forma no te sirve, sólo te queda hacerlo por programa. En mysql es la única que tienes para hacerlo automático, salvo que tengas instalada la última versión de mysql y emplees triggers para hacerlo.
Un saludo.

customerboot 19/07/2008 17:32

Respuesta: Consulta Php + MySql, enumerar filas de una select
 
Hola a todos, mi dificultad es muy parecida, debo poder obtener un orden de cualquier select que realizo, pero este debe poder soportar incluso las agrupaciones, no tengo idea de como podria hacerse usando solo un select, este es el ejemplo:

id nombre
1 Juan
2 Pepe
3 Hugo
4 Paco
5 Luis

Select Orden, Id, Nombre from taba where nombre like p%

Orden Id Nombre
1 2 Pepe
2 4 Paco

En algun lado vi que se podria usar alguna variable para ir haciendo un contador, de manera de ir sumando en el resultado, pero me parece que esto no serviria en el caso de tener que repetri el select para un distinto grupo, por decir:

select orden , id , nombre from tabla where .......... limit 31, 60

En ese caso deberi mostrar algo asi:

orden id nombre
31 80 fffffffffffffff
32 7 safjasfjksdf
33 8 asfasfkjkasf
34 9 asfasasfjklsfñl
35 25 hasfkjhkhakjshdfkj

Gracias y feliz cumple a todos...

jurena 20/07/2008 01:22

Respuesta: Consulta Php + MySql, enumerar filas de una select
 
Se puede hacer en MySQL solamente, pero yo no te lo recomiendo.
Mira este enlace
http://www.forosdelweb.com/f21/obten...-mysql-599492/

Allí se explica como hacerlo, pero si necesitas agrupar deberás mirar el enlace de procedencia de la página de O'Reilly.

No obstante, esto se hace fácilmente con PHP. Pídelo en ese foro y obtendrás lo que quieres, sin complicaciones y con rapidez.

ikary 22/01/2010 07:40

Respuesta: Consulta Php + MySql, enumerar filas de una select
 
También lo podéis hacer con esta sintaxis

Código:

SELECT
    @rownum:=@rownum+1 as enumeracion,
    mitabla.campo1,
    mitabla.campo2
FROM mitabla, (SELECT @rownum:=0) R


JavierB 22/01/2010 09:36

Respuesta: Consulta Php + MySql, enumerar filas de una select
 
Hola ikary

Te recuerdo el aviso que había al final de este tema y que parece que no has leído.

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.

Tema cerrado.


La zona horaria es GMT -6. Ahora son las 00:16.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.