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

Campo extra en decremento

Estas en el tema de Campo extra en decremento en el foro de Mysql en Foros del Web. Buenas estimados, tengo una tabla donde su Id es una pk y ademas autoincremental. Quisiera agregarle un campo entero que vaya en decremento, algo asi: ...
  #1 (permalink)  
Antiguo 13/05/2014, 11:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 7 meses
Puntos: 6
Campo extra en decremento

Buenas estimados,

tengo una tabla donde su Id es una pk y ademas autoincremental.

Quisiera agregarle un campo entero que vaya en decremento, algo asi:

id--nombre--orden
1 forosdelweb 3
2 facebook 2
3 twitter 1

Agradeceré cualquier ayuda, saludos!
Gustav.
  #2 (permalink)  
Antiguo 13/05/2014, 13:12
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, 6 meses
Puntos: 2658
Respuesta: Campo extra en decremento

¿Y qué determina ese orden? ¿Es base a qué criterio lo numeras y para qué?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/05/2014, 13:16
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Campo extra en decremento

El orden es un ORDER BY id pero indiferentemente de eso necesito mostrar un listado donde el primer registro este numerado como ultimo.

Saludos y gracias!
  #4 (permalink)  
Antiguo 13/05/2014, 13:20
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, 6 meses
Puntos: 2658
Respuesta: Campo extra en decremento

Cita:
Iniciado por gus_anomaly Ver Mensaje
El orden es un ORDER BY id pero indiferentemente de eso necesito mostrar un listado donde el primer registro este numerado como ultimo.

Saludos y gracias!
Pues lo que muestres en la interfaz, lo puedes resolver sin problema en programación. No es práctico, y es desaconsejado, poner datos que se generan dinámicamente.
Es igual a guardar datos calculables.
No es que no se pueda hacer, simplemente que recargas innecesariamente el alta del registro, obligando a renumerar ante cada insert.
Desde el punto de vista de performance, es una muy mala idea, y como te dije, es más simple implementarlo cuando lo muestras en el formulario (tema de programción, no de BBDD).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/05/2014, 13:23
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Campo extra en decremento

Entiendo lo que dices, desde el lado performante no me preocupa porque como mucho será un listado de 10 registros.

Desde el lado programación, en este caso, trato de darle el trabajo al motor de la base.

Saludos y gracias igualmente!
Gutsav.
  #6 (permalink)  
Antiguo 13/05/2014, 13:33
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, 6 meses
Puntos: 2658
Respuesta: Campo extra en decremento

Cita:
Desde el lado programación, en este caso, trato de darle el trabajo al motor de la base.
La base de datos no está para eso. Los lenguajes de programación tienen mejores recursos para realizar ese tipo de tareas.
Para decirtelo en pocas palabras, en la base deberás hacer al menos dos queries para lograrlo, o implementar stored procedures, o incluso trigger, lo que es una pésima idea.
En programación sería solamente obtener en una variable el total de registros devueltos y usarla en forma decremental, al mismo tiempo que despliegas los datos de cada regisatro.
A lo más serían dos o tres líneas de código.
¿De verdad te parece mejor darle esa tarea a la base?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/05/2014, 13:37
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Campo extra en decremento

Estimado, dije TRATO, bajo las premisas que usted me da donde tengo que generar SP o Triggers no esta más en discusión y lo soluciono con programación.

Ahora, Si con una sub query estaba resuelta mi cuestión sin dudas hago que la Base lo haga.

Saludos y un gran abrazo!
Gustav.
  #8 (permalink)  
Antiguo 14/05/2014, 06:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 3 meses
Puntos: 574
Respuesta: Campo extra en decremento

Estoy totalmente deacuerdo con lo que dice @gnzsoloyo hay muchisimas cosas que es mejor hacerlas en programación externa, por faciles, porque la solución en la base de datos no sera estandar... etc.

Pero

Código MySQL:
Ver original
  1. select id,nombre, @a:=@a+1 orden from TuTala ORDER BY id DESC;

Seria lo que buscas?

No intentes guardar ese campo se calcula cada vez que ejecutes la query.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #9 (permalink)  
Antiguo 14/05/2014, 06:45
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 7 meses
Puntos: 6
Respuesta: Campo extra en decremento

Hola!

Muchisimas gracias, el campo orden que es el que hace el conteo me sale null.


Sobre las cosas de hacerlas en programación, estoy totalmente de acuerdo, en mi caso puntual es donde prefiero hacerlo asi de ser posible.


Saludos!!!
Gustav.
  #10 (permalink)  
Antiguo 14/05/2014, 06:49
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 3 meses
Puntos: 574
Respuesta: Campo extra en decremento

El campo orden no debe estar en la tabla, solo es un alias de la variable (creo que se le puede poner alias, si no quitalo).
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 14/05/2014, 06:52
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, 6 meses
Puntos: 2658
Respuesta: Campo extra en decremento

El campo de la variable sale NULL porque debe inicializarse primero la variable:
Código MySQL:
Ver original
  1. SET @a = 0;
  2. SELECT  id,nombre, @a:=@a+1 orden
  3. FROM TuTala
Una variable de usuario (en MySQL son las que tienen una arroba), tiene valor inicial NULL, y toda operación con NULL da NULL.
En tu caso se requiere, para una columna decremental, como te dije, dos querys al menos:
Código MySQL:
Ver original
  1. SET @a = (SELECT COUNT(*) FROM tutabla) +1;
  2. SELECT  id,nombre, (@a:=@a-1) orden
  3. FROM TuTala
Como dije, es posible, pero por más que te parezca una buena idea, es una muy, pero muy mala idea hacer cosas en la base que no son su responsabilidad.
Si empiezas a romper el encapsulamiento de la base y la aplicación, generaras un exceso de acoplamiento, nocivo, que tarde o temprano deberás revertir o te causará problemas severos.
Desde el punto de vista de BBDD es un error, y desde el análisis de sistemas también.
Es tu decisión. Yo no te lo aconsejo.
__________________
¿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: campo, extra, tabla
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 05:23.