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

Problema con Left Join

Estas en el tema de Problema con Left Join en el foro de Mysql en Foros del Web. Buenas tardes como estan ??? Bueno tengo una consulta y tiene algun problema porque no funciona como necesito la consulta es esta Código: select sum((det_compras.cantidad ...
  #1 (permalink)  
Antiguo 29/04/2009, 14:05
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 10 meses
Puntos: 0
Problema con Left Join

Buenas tardes como estan ???

Bueno tengo una consulta y tiene algun problema porque no funciona como necesito

la consulta es esta

Código:
select sum((det_compras.cantidad + det_nota.cantidad) - det_venta.cantidad - det_devoluciones.cantidad)
 from det_compras
left join det_devoluciones on det_devoluciones.codpro = det_compras.codpro
left join det_venta on det_venta.codpro = det_compras.codpro 
left join det_nota on det_nota.codpro = det_compras.codpro
where det_compras.codpro = 1
como veran lo que hago es buscar del producto 1 y sumar las cantidades que han comprado (det_compras), las que han sido devueltas al negocios (det_nota) y luego restar las que fueron vendidas (det_venta) y las que han sido devueltas al proveedor (det_devoluciones).

Lo seguro es que el codigo 1 va a estar el det_compras entonces buscamos si existe en las demas tablas y sumar o restar segun que tabla sea.
Ahora el problema es que si en alguna de estas tablas el el dato 1 no existe me trae el valor nulo. Es decir

si compre (det_compras) 3 y vendi (det_venta) 1, de las vendidas devolviron al negocio (det_nota) 1 pero no devolvi al proveedor (det_devoluciones) ninguno me trae nulo el valor y me deberia traer 3 ... porque sera ???
Gracias
  #2 (permalink)  
Antiguo 29/04/2009, 15:42
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problema con Left Join

Al realizar operaciones con mysql debes de tener en cuenta que cualquier campo null haria que toda tu operacion se volviera NULL para eso necesitas especificar el IFNULL y con eso se corrije el problema

Código:
select sum((IFNULL(det_compras.cantidad,0) + IFNULL(det_nota.cantidad,0)) - IFNULL(det_venta.cantidad,0) - IFNULL(det_devoluciones.cantidad,0))
 from det_compras
left join det_devoluciones on det_devoluciones.codpro = det_compras.codpro
left join det_venta on det_venta.codpro = det_compras.codpro 
left join det_nota on det_nota.codpro = det_compras.codpro
where det_compras.codpro = 1
Asi ya te debera regresar el resultado que deseas...

saludos...!!!
  #3 (permalink)  
Antiguo 29/04/2009, 15:58
mgd
 
Fecha de Ingreso: enero-2009
Mensajes: 129
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Problema con Left Join

Ok muchas gracias eso no lo sabia
  #4 (permalink)  
Antiguo 29/04/2009, 16:00
 
Fecha de Ingreso: abril-2009
Mensajes: 17
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Problema con Left Join

de nada saludos...!!!
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 22:21.