-- Procedimiento almacenado 1: nos avisa a qué producto está asociado un SKU
DELIMITER //
CREATE PROCEDURE VerificarSKU(
    IN SKU_a_verificar VARCHAR(255)
)
BEGIN
    DECLARE existe_en_libros INT;
    DECLARE existe_en_revistas INT;
    DECLARE existe_en_vinilos INT;

    -- Verificar en libros
    SELECT COUNT(*) INTO existe_en_libros FROM libros WHERE Id_SKU_Libro = SKU_a_verificar;

    -- Verificar en revistas
    SELECT COUNT(*) INTO existe_en_revistas FROM revistas WHERE Id_SKU_Revista = SKU_a_verificar;

    -- Verificar en vinilos
    SELECT COUNT(*) INTO existe_en_vinilos FROM vinilos WHERE Id_SKU_Vinilo = SKU_a_verificar;

    -- Realizar acciones basadas en los resultados
    IF existe_en_libros > 0 THEN
        SELECT 'Libro';
    ELSEIF existe_en_revistas > 0 THEN
        SELECT 'Revista';
    ELSEIF existe_en_vinilos > 0 THEN
        -- Acciones si está en tabla_3
        SELECT 'Vinilo';
    ELSE
        -- Acciones si no está en ninguna de las tablas
        SELECT 'SKU no encontrado';
    END IF;
END //
DELIMITER ;

-- Procedimiento almacenado 2: procedimiento que nos entrega una tabla de productos que vendieron más que un valor especifico
DELIMITER //
CREATE PROCEDURE VentasSobre(
    IN valor INT
)
BEGIN
	SET @ventas = CONCAT('SELECT Fk_SKU, COUNT(*) AS N_Ventas FROM Ventas GROUP BY Fk_SKU HAVING N_Ventas > ', valor);
    PREPARE runSQL FROM @ventas;
    EXECUTE runSQL;
    DEALLOCATE PREPARE runSQL;
END //


CALL libreria.VerificarSKU('562912902-3');
CALL libreria.VentasSobre(2);