Ver Mensaje Individual
  #50 (permalink)  
Antiguo 09/01/2016, 21:49
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 meses
Puntos: 977
Respuesta: Ayudita con el ID inicio del año empezar otra vez

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
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand