MySQL - Resta dos campos diferentes tablas

 
Vista:
sin imagen de perfil

Resta dos campos diferentes tablas

Publicado por Cristian (3 intervenciones) el 26/12/2016 13:37:42
Hola buen día a todos, espero hallan pasado una linda navidad.

Tengo un problema que no he podido solucionar, he buscado por todos los sitios y solo e podido generar lo siguiente.

Necesito restar dos campos de dos tablas distintas, restar campo entrada.insumo – devolución.insumo, les dejo lo que tengo.


1
2
3
4
5
6
7
8
9
10
11
12
13
select id_enc_salida_insumo,id_insumo,id_recep, nom_insumo, nom_centrocosto, tipó_Doc, sum(entrega) , sum(devolucion), sum(entrega) - sum(devolucion)
from
(
select   d.id_enc_salida_insumo,d.id_insumo,d.id_recep, d.nom_insumo, d.nom_centrocosto, 'Devolucion' as tipó_Doc, '0' as entrega,sum(d.cantidad) as devolucion
 from bc_rpt.devolucion_insumo d
  where d.id_enc_salida_insumo ='22'
 group by d.id_enc_salida_insumo,d.id_insumo,d.id_recep, d.nom_insumo, d.nom_centrocosto
  union all
  select   e.id_enc_salida_insumo,e.id_insumo,e.id_recep, e.nom_insumo, e.nom_centrocosto,'Salida' as tipó_Doc,sum(e.cantidad) as entrega,'0'as devolucion
 from bc_rpt.entrega_ionsumos e
  where e.id_enc_salida_insumo ='22'
 group by e.id_enc_salida_insumo,e.id_insumo,e.id_recep, e.nom_insumo, e.nom_centrocosto) as t
 group by id_enc_salida_insumo,id_insumo,id_recep, nom_insumo, nom_centrocosto

El otro punto es que la tabla entrega_ionsumos tiene 4 campos y la devolucion_insumo solo 3.
Gracias desde ya.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Resta dos campos diferentes tablas

Publicado por Cristian (3 intervenciones) el 26/12/2016 19:20:56
Creo haber solucionado el problema, pero se me genera otro, bajo esta consulta con subconsultas no puedo crear una vista.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
select s2.id_enc_salida_insumo, s2.id_insumo, s2.id_recep, s2.entrega, if (s1.nom_insumo is null,0,s1.nom_insumo) as nom_insumo,s2.nom_insumo, if(s1.devolucion is null,0,s1.devolucion) as devolcuion, s2.entrega-if(s1.devolucion is null,0,s1.devolucion) as total
from
(
  select   s.id_enc_salida_insumo,s.id_insumo,s.id_recep, s.nom_insumo,sum(s.cantidad) as entrega
 from bc_rpt.salida_insumo s
 -- where s.id_enc_salida_insumo ='22'
 group by s.id_enc_salida_insumo,s.id_insumo) s2
  left join
 (select   d.id_enc_salida_insumo,d.id_insumo,d.id_recep, d.nom_insumo, sum(d.cantidad) as devolucion
 from bc_rpt.devolucion_insumo d
  -- where d.id_enc_salida_insumo ='22'
 group by d.id_enc_salida_insumo,d.id_insumo) s1
 
 using(id_enc_salida_insumo,id_insumo)
alguna idea como solucionarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar