Hola, tengo un problemon con un procedure que quiero hacer. tengo dos consulta. uno es de una venta y otro de una compra. la consulta trae el articulo vendido o comprado por tal nro comprobante. eso ya funciona todo. Lo que no funciona es cuando junto esa dos consulta. solo me trae la consulta del primero que encuentra.
Copio el procedure para entender mejor
CREATE DEFINER = 'root'@'localhost' PROCEDURE `procmovimiento`(IN id INTEGER(11), in iddeposito INTEGER(11))
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE l_last_row INT DEFAULT 0;
declare idconceptoinv INT;
DECLARE cur_select CURSOR FOR
SELECT
inventarios.idconceptoinv
FROM
inventarios
WHERE
(inventarios.idtem = id) AND
(inventarios.iddeposito = iddeposito);
DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row=1;
set l_last_row=0;
open cur_select;
c2_loop: WHILE(l_last_row=0) DO
FETCH cur_select INTO idconceptoinv;
IF (l_last_row =1) THEN
LEAVE c2_loop;
END IF;
SET l_last_row=l_last_row+1;
if (idconceptoinv = 2) THEN
SELECT
detallesventas.idItem,
items.nombreItem,
concat(coalesce(dventas.nroestablecimiento, ''), '-', coalesce(dventas.puntoemision, ''), '-', coalesce(ventas.nrofactura, '')) AS nrofactura,
tipocomprobante.descripcion as comprobante,
ventas.FechaFactura,
inventarios.cantidad,
detallesventas.Pventa as precios
FROM
ventainventario
INNER JOIN inventarios ON (ventainventario.idInventario = inventarios.idInventario)
INNER JOIN ventas ON (ventas.idFacturaVenta = ventainventario.idfacturaventa)
INNER JOIN detallesventas ON (detallesventas.idFacturaVentaD = ventas.idFacturaVenta)
INNER JOIN dventas ON (ventas.iddventa = dventas.idDventa)
INNER JOIN items ON (detallesventas.idItem = items.idItem)
INNER JOIN tipocomprobante ON (dventas.idtipocomprobante = tipocomprobante.idTipocomprobante)
WHERE
(detallesventas.idItem = id) AND inventarios.iddeposito = iddeposito and inventarios.idconceptoinv = idconceptoinv;
END IF;
if (idconceptoinv =1) THEN
SELECT
detallescompras.`idItem`,
items.nombreItem,
compras.nrofactura,
tipocomprobante.descripcion as comprobante,
compras.FechaFactura,
detallescompras.cantidad,
detallescompras.pcompra as precios
FROM
detallescompras
INNER JOIN comprainventario ON (detallescompras.idfacturacompaD = comprainventario.idfacturaCompra)
INNER JOIN inventarios ON (comprainventario.idinventario = inventarios.idInventario)
INNER JOIN items ON (detallescompras.idItem = items.idItem)
INNER JOIN compras ON (detallescompras.idfacturacompaD = compras.idfacturacompra)
INNER JOIN dcompras ON (compras.iddcompra = dcompras.idDcompra)
INNER JOIN tipocomprobante ON (dcompras.idtipocomprobante = tipocomprobante.idTipocomprobante)
WHERE
(detallescompras.idItem = id) AND inventarios.iddeposito = iddeposito and inventarios.idconceptoinv = idconceptoinv;
END IF;
select idItem,nombreItem,nrofactura,comprobante,FechaFact ura,cantidad,precios;
END WHILE c2_loop;
CLOSE cur_select;
set l_last_row=0;
END;
En la primera linea hace la consulta al inventario, y dependiendo que trae esa consulta. hace el loop y tendria que traer los datos.