Por la Redacción de FoxPress
En este
breve artículo se comenta la forma de usar SQL para crear tablas
temporales (cursores) rellenarlos con
algunos datos y destruir la tabla al final de la sesión.
Es
necesario recordar que las tablas temporales solo existen mientras la sesión
está viva . Si se corre este código en un script de PHP, la tabla temporal se
destruirá automáticamente cuando la página acabe de ejecutarse. Si estás
conectado a MySQl database server desde el cliente de MySQL (mysql), la tabla
temporal existirá sólo hasta que cierres el cliente manualmente o destruyas la
tabla.
Nota que
puedes especificar un motor de almacenamiento para una tabla temporal. Si no
especificas MEMORY (como se muestra a continuación), la tabla se guardará por
defecto en el disco.
También
nota el uso de los alias de tabla en la instrucción SELECT de cara a
facilitar a la vez claridad y brevedad
al mismo tiempo:
*- Creamos el cursor
CREATE TEMPORARY TABLE SalesSummary (
product_name VARCHAR(50) NOT NULL
, total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
, avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
, total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
) ENGINE=MEMORY;
*- Introducimos datos en el cursor
INSERT INTO SalesSummary
(product_name, total_sales, avg_unit_price, total_units_sold)
SELECT
p.name
, SUM(oi.sales_amount)
, AVG(oi.unit_price)
, SUM(oi.quantity_sold)
FROM OrderItems oi
INNER JOIN Products p
ON oi.product_id = p.product_id
GROUP BY p.name;
*- Leemos el cursor
SELECT * FROM SalesSummary;
/* OK, obtenemos el producto más vendido */
SELECT product_name AS "Top Seller"
FROM SalesSummary
ORDER BY total_sales DESC
LIMIT 1;
/* Explicitamente se borra la tabla*/
DROP TABLE SalesSummary;
FoxPress – Junio de 2006
© 2006 FoxPress. All rights reserved