Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Procedimiento con subconsultas

Estas en el tema de Procedimiento con subconsultas en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/09/2011, 12:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 10
Antigüedad: 14 años, 2 meses
Puntos: 0
Procedimiento con subconsultas

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.

Etiquetas: join, procedimiento, select, sql, subconsultas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:15.