LA EXPERIENCIA DE CONVERTIR TALENTO EN NEGOCIO

lunes, mayo 18, 2009

MySQL: Conocer el último ID autonumérico

Teniendo las siguientes premisas:

  1. Tenemos una primera tabla que tiene una llave primaria representada por un campo autonumérico (ventas).
  2. Tenemos una segunda tabla que se relaciona con la primera mediante una llave foránea (ventas_detalle).
  3. Tenemos una pantalla en un sistema que utiliza las tablas anteriores, donde en la misma transacción se deben insertar registros en ambas tablas.
¿Como conocer el valor del ID insertado en ventas para insertarlo en ventas_detalle?

Si estamos manejando el motor de base de datos MySQL, nos permite resolver la pregunta anterior con un solo comando: mysql_insert_id.

El ejemplo de código en PHP sería:

$VConn= ConectarBD("", "", ""); // Conexión a base de datos
$VSql="INSERT INTO ventas (folio, total) VALUES ($Folio, $Total);"
mysql_query($VSql, $VConn);
$UltimoID= mysql_insert_id($VConn);

for ($ind=0; $ind < $Registros; $ind++)
{
// Las variables se adaptan a tu proyecto
$VSql= "INSERT INTO ventas_detalle (id_venta, id_producto, cantidad, monto) VALUES ($UltimoID, $Id_Producto, $Cantidad, $Monto);";
}

Espero que implementen este conocimiento en alguno de sus códigos, estoy a sus órdenes, dudas y comentarios a rodrigo@creandosistemas.com.mx

viernes, mayo 15, 2009

PostgreSQL: Convertir NULL a un valor

En algún momento podrás necesitar en una consulta SQL convetir un valor NULL a un valor entero, comúnmente 0 (zero), el objetivo podría ser utilizarlo para un cálculo matemático, y al existir un valor NULL en una suma por ejemplo, el resultado es NULL. La función que nos permite la conversión es COALESCE, tiene dos parámetros: campo NULL, valor deseado.

Ejemplo SQL:

SELECT COALESCE(SUM(cmonto), 0) FROM ventas WHERE fecha= '2009-04-04';

Si el 4 de Abril del 2009 no existieron ventas, la consulta regresará un 0, sin utilizar COALESCE el resultado sería NULL.