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

Como generar correlativos con funcion

Estas en el tema de Como generar correlativos con funcion en el foro de Mysql en Foros del Web. Buenos días compañeros tengo una tabla en la que registro unas ventas el problema es que tengo una nueva division (PUNTO DE VENTA) dentro de ...
  #1 (permalink)  
Antiguo 29/09/2014, 11:35
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Pregunta Como generar correlativos con funcion

Buenos días compañeros tengo una tabla en la que registro unas ventas el problema es que tengo una nueva division (PUNTO DE VENTA) dentro de la misma empresa y necesitan crear un codigo para cada venta segun de donde se opere ejemplo

Kiosko tendrá el correlativo KO y sala de ventas el correlativo SV encontes cuando haya una venta en kiosko me devuelva lo siguiente:
KO1=venta de kiosko no. 1
KO2=venta de kiosko no. 2
y asi sucesivamente
pero si lo hacen desde sala de ventas lo haga asi
SV1=venta de sala de ventas no. 1
SV2=venta de sala de ventas no. 2

entonces en la tabla de ventas me quedaria algo asi
Código MySQL:
Ver original
  1. TABLA VENTAS
  2. ID | IDPV | CORRELATIVO | IDCLIENTE | IDPROD | CANT | PRECIO | TOTAL | FECHA
  3. 1 | 1 | KO1 | 15 | 201 | 20 | 18.45 | 369.00 | 2014-09-29
  4. 2 | 2 | SV1 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  5. 3 | 1 | KO2 | 15 | 201 | 20 | 18.45 | 369 | 2014-09-29
  6. 4 | 2 | SV2 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  7. 5 | 2 | SV3 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  8.  
  9. TABLA PUNTO DE VENTA
  10. IDPV | ALIAS | P_VENTA
  11. 1 | KO | KIOSKO
  12. 2 | SV | SALA_DE_VENTAS
No estoy pidiendo que me resuelvan el problema solamente que me orienten a como solucionarlo, ya que no se como hacer funciones en mysql (si es una funcion la que se necesita) ni procedimientos, solamente disparadores.
De antemano gracias.
  #2 (permalink)  
Antiguo 30/09/2014, 02:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como generar correlativos con funcion

Yo lo solucionaria con programación externa....

Primero guardaria la cosas por separado, de hecho ya lo haces con IDPV, pero el correlativo lo guardaria como un entero, sin ensuciarlo con siglas que ademas no añaden información ya que ya lo tiene en IDPV. Luego consultando el valor mas alto del correlativo de cada tipo y sumando uno.

Código MySQL:
Ver original
  1. TABLA VENTAS
  2. ID | IDPV | CORRELATIVO | IDCLIENTE | IDPROD | CANT | PRECIO | TOTAL | FECHA
  3. 1 | 1 | 1 | 15 | 201 | 20 | 18.45 | 369.00 | 2014-09-29
  4. 2 | 2 | 1 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  5. 3 | 1 | 2 | 15 | 201 | 20 | 18.45 | 369 | 2014-09-29
  6. 4 | 2 | 2 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  7. 5 | 2 | 3 | 10 | 185 | 22 | 11.00 | 242.00 | 2014-09-29
  8.  
  9. TABLA PUNTO DE VENTA
  10. IDPV | ALIAS | P_VENTA
  11. 1 | KO | KIOSKO
  12. 2 | SV | SALA_DE_VENTAS

Código MySQL:
Ver original
  1. SELECT MAX(CORRELATIVO) ultimo FROM VENTAS WHERE IDPV=1;

INSERT INTO VENTAS...

Código MySQL:
Ver original
  1. SELECT ID,IDPV,CONCAT(PV.ALIAS,V.CORRELATIVO) CORRELATIVO,IDCLIENTE,IDPROD,CANT,PRECIO,TOTAL,FECHA
  2.    FROM VENTAS V INNER JOIN `PUNTO DE VENTA` PV  
  3.        ON V.IDPV=PV.IDPV;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 30/09/2014 a las 02:07
  #3 (permalink)  
Antiguo 30/09/2014, 14:20
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Respuesta: Como generar correlativos con funcion

Muchas gracias por tu respuesta, fijate que ya he creado esta funcion

Código MySQL:
Ver original
  1. CREATE FUNCTION correlativo_presupuesto(pv int)
  2. select ifnull(max(correlativo), 0)+1 into @corr from ventas where idpv=pv;
  3. set @corre=@corr;
  4. return (@corre);
Lo que quiero saber es como implementarlo a la hora de hacer un nuevo INSERT

Gracias por tu ayuda

Etiquetas: Ninguno
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:42.