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

sumar 1 a registro sql

Estas en el tema de sumar 1 a registro sql en el foro de Bases de Datos General en Foros del Web. hola amigos espero que me ayuden quiero hacer un consulta donde el codfactura se suma +1 cada vez que se hago un insert de datos ...
  #1 (permalink)  
Antiguo 08/02/2010, 19:20
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Sonrisa sumar 1 a registro sql

hola amigos espero que me ayuden

quiero hacer un consulta donde el codfactura se suma +1 cada vez que se hago un insert de datos a la base de datos.

no se si me entiendan la idea es sumar +1 a el valor de codfacutra, es como un contador pero manual sin autoincrement.

gracias estareatento del post a cualquier colaboracion
  #2 (permalink)  
Antiguo 08/02/2010, 20:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: sumar 1 a registro sql

que tiene de malo el auto_increment?

puedes hacerlo también con el máximo.

Código SQL:
Ver original
  1. SELECT MAX(id) FROM tabla

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 08/02/2010, 20:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: sumar 1 a registro sql

gracias huesos52 asi puedo sacar cual es el valor max pero la idea es q el id se le suma +1

pues estoy trabajando en un formulario de factura donde llamo el id pero nesecito sumarle 1 para seguir el consecutivo.

espero q me entiendas paisano
  #4 (permalink)  
Antiguo 08/02/2010, 20:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: sumar 1 a registro sql

Te lo pongo en un ejemplo

Código MySQL:
Ver original
  1. mysql> select *from t1;
  2. +----+
  3. | id |
  4. +----+
  5. |  1 |
  6. |  2 |
  7. |  4 |
  8. |  5 |
  9. +----+
  10. 4 rows in set (0.00 sec)
  11.  
  12. mysql> insert into t1 select max(id)+1 from t1;
  13. Query OK, 1 row affected (0.00 sec)
  14. Records: 1  Duplicates: 0  Warnings: 0
  15.  
  16. mysql> select *from t1;
  17. +----+
  18. | id |
  19. +----+
  20. |  1 |
  21. |  2 |
  22. |  4 |
  23. |  5 |
  24. |  6 |
  25. +----+
  26. 5 rows in set (0.00 sec)
  27.  
  28. mysql>

sin embargo vuelvo e insisto... que problema tienes con usar una columna auto_increment?

saludos paisano
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 08/02/2010, 20:29
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, 5 meses
Puntos: 2658
Respuesta: sumar 1 a registro sql

Me parece que está confundiendo el ID de la factura con el ID del subítem...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 08/02/2010, 20:41
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: sumar 1 a registro sql

mi tabla es la siguiente

ID codfactura fecha codcliente totalfactura borrado

id de la tabla todo bn pero el codfactura es el numero de consecutivo de la factura este numero se lo devo dar a mis facturas, mi idea era hacer como un contador si se puede dentro de la sql o en javascript,

pes esta tabla la tengo relacionada a otra


codfactura numlinea codarticulo referencia cantidad precio_cliente importe dcto


donde el codfactura es el mismo que el la otra tabla
  #7 (permalink)  
Antiguo 08/02/2010, 21:00
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: sumar 1 a registro sql

huesos52 me das tu msn paisano que viva colombia (Y)
  #8 (permalink)  
Antiguo 08/02/2010, 21: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, 5 meses
Puntos: 2658
Respuesta: sumar 1 a registro sql

Por lo que se ve de la estructura descripta, codfactura es un valor incremental, por lo que no se entiende bien por qué no te resulta práctico usar un auto_increment para ese caso.
¿A qué se debe que no quieres usarlo?
__________________
¿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 09/02/2010, 00:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 35
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: sumar 1 a registro sql

jajajajjajajj parece que eniendo lo que necesitas haz esto selec

SELECT (max(codfactura)+1) as codfactura_posterior FROM facturas
// en la consulta te rotornara adicionalmente el campo codfactura_posterior que sera codfactura +1



si no es esooo no se que es XD
  #10 (permalink)  
Antiguo 09/02/2010, 04:51
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, 5 meses
Puntos: 2658
Respuesta: sumar 1 a registro sql

SI, ya sabemos que eso es lo que quiere, pero lo que no se entiende bien es por qué no le sirve el AUTO_INCREMENT, que hace precisamente eso mismo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 09/02/2010, 08:37
 
Fecha de Ingreso: febrero-2009
Mensajes: 489
Antigüedad: 15 años, 2 meses
Puntos: 8
Respuesta: sumar 1 a registro sql

gracias andystefano2 eso era lo q estaba buscando gracias amigos por la colaboracion.
  #12 (permalink)  
Antiguo 12/02/2010, 14:40
 
Fecha de Ingreso: enero-2010
Ubicación: Sevilla
Mensajes: 202
Antigüedad: 14 años, 3 meses
Puntos: 5
Respuesta: sumar 1 a registro sql

Hola a todos

Esta solución que habéis propuesto funciona bien siempre que haya UN SOLO USUARIO, porque si hay más de uno concurrente puede ocurrir que le devuelva el mismo número a varios de ellos, ya que por lo que parece, calculas el número antes de guardar la factura.

Una solución mejor es utilizar una tabla para obtener los números de secuencia y mediante un trigger o un procedimiento almacenado obtener el número cuando estés guardando la factura.

La tabla de secuencias es muy simple:
Secuencias(Id, entidad, numero_secuencia)

Cuando vayas a insertar, recuperas el número para la entidad correspondiente (en tu caso factura), luego haces un UPDATE de Secuencias y pones numero_secuencia= numero_secuencia+1 para dejarla preparada para la siguiente inserción.

Te recomiendo, por último que utilices transacciones para asegurar que el resultado es correcto.

saludos

Etiquetas: registro, sql
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 22:05.