PHP - Forma mas optimizada de valor duplicado validando 2 campos??

 
Vista:
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Forma mas optimizada de valor duplicado validando 2 campos??

Publicado por Kathyu (905 intervenciones) el 09/05/2019 22:01:04
Tengo el siguiente requerimiento.

En la tabla Ingresos donde guardo las compras de X proveedor, que no se guarden (porque en teoría eso no existe) dos facturas con el mismo numero y proveedor.

1
2
3
4
5
6
7
Proveedor------Factura
ABC-------------12   <=
XYZ--------------6
ABC-------------16
ABC-------------12   <=
XYZ--------------25
XYZ--------------12

No puedo poner el campo de factura único porque mas de un proveedor puede entregar un mismo numero de factura.

Se me ocurre hacer un
1
SELECT factura FROM ingreso WHERE proveedor = $proveedor

Y si esta me arroja un valor pues no dejarlo pasar.

Pero pregunto si conocen algún método mas optimo y profesional??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Forma mas optimizada de valor duplicado validando 2 campos??

Publicado por Yamil (888 intervenciones) el 09/05/2019 22:35:36
Deberias manejar la logica de datos donde deberia hacerse, es decir, dentro de la BD y como un stored procedure.
Puedes usar la sentencia SELECT EXISTS( SELECT factura FROM ingreso WHERE proveedor = $proveedor and Factura=$factura)
para saber si existe la factura para ese proveedor. Te retorna 1 si existe, 0 en caso contrario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Forma mas optimizada de valor duplicado validando 2 campos??

Publicado por Kathyu (905 intervenciones) el 09/05/2019 23:05:20
Pero al final es lo mismo que ya tengo, ver si existe una factura con el numero y el proveedor recién ingresados.

Esto, aunque por procedimiento no es lo que busco.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Forma mas optimizada de valor duplicado validando 2 campos??

Publicado por Alejandro (840 intervenciones) el 09/05/2019 22:43:10
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Puedes usar indices
1
CREATE UNIQUE INDEX nombreParaIndice ON ingresos(Proveedor,Factura);
Esto te permitirá que no se dupliquen los registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kathyu
Val: 1.802
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Forma mas optimizada de valor duplicado validando 2 campos??

Publicado por Kathyu (905 intervenciones) el 09/05/2019 23:12:14
Justo eso, yo declaraba los indices en base a un criterio, nunca había visto que podía tener mas criterios de comparación.

Lo hice y es correcto, no deja pasar el ejemplo que puse arriba.

Gracias Alejandro.

Solucionado !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar