Ver Mensaje Individual
  #51 (permalink)  
Antiguo 09/01/2016, 22:22
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Ayudita con el ID inicio del año empezar otra vez

Cita:
Iniciado por Alexis88 Ver Mensaje
El único cambio que te indiqué hacer en tu tabla es el de cambiar el tipo de dato del campo del código de entero autoincrementable a cadena puesto que tu idea de código está compuestos por números, letras y guiones.

En cuanto a la consulta SQL, para que quede como quieres, solo hace falta concatenar la expresión "CODIGO-":

Código MySQL:
Ver original
  1. IF ((SELECT COUNT(*) FROM Personas AS alias1) > 0 AND SUBSTRING((SELECT CodigoUnico FROM Personas AS alias2 ORDER BY CodigoUnico DESC LIMIT 1), 8, 12) = YEAR(CURDATE()),
  2.     CONCAT(
  3.         "CODIGO-",
  4.         YEAR(CURDATE()),
  5.         '-',
  6.         CONVERT(
  7.             SUBSTRING((SELECT CodigoUnico FROM Personas AS alias3 ORDER BY CodigoUnico DESC LIMIT 1), 14),
  8.             UNSIGNED INTEGER
  9.         ) + 1
  10.     ),
  11.     CONCAT("CODIGO-", YEAR(CURDATE()), '-', 1)
  12. )

El bloque de la condición y las instrucciones que se ejecutan según sea el caso, sirven para generar el código correlativo. Se buscan datos en la tabla y de haberlos y ser el último código insertado perteneciente al año actual, se genera un nuevo código correlativo para el mismo año, caso contrario, se genera uno pero para el nuevo año, empezando la cuenta desde el 1.

También puedes hacerlo con PHP, pero particularmente me decanto por MySQL por la eficiencia y velocidad del motor de la base de datos.

Un saludo
es que no comprendo las palabras que usas pense que era facil solucionar o sea ya no sirve mi tabla?? no comprendo

esta es mi tabla
Cita:
CREATE TABLE IF NOT EXISTS `Personas` (
`idp` int(11) NOT NULL AUTO_INCREMENT,
`CodigoUnico` text NOT NULL,
`Anio` datetime DEFAULT NULL,
`Nombre` varchar(100) NOT NULL DEFAULT '',
`Apellido` varchar(100) NOT NULL DEFAULT '',
PRIMARY KEY (`idp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

Última edición por pilucho; 09/01/2016 a las 22:23 Razón: add tb