SQL - SUMA DUPLICADA

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 83 puestos en SQL (en relación al último mes)
Gráfica de SQL

SUMA DUPLICADA

Publicado por Jose (1 intervención) el 01/11/2019 09:24:39
Cordial saludo,
Tengo las siguientes tablas en Mysql:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
mysql> SELECT ID_PROD,DESCRIP FROM PRODUCTOS;
+---------+------------------+
| ID_PROD | DESCRIP          |
+---------+------------------+
| 001     | POKER            |
| 002     | AGUILA           |
| 003     | GASEOSA          |
| 004     | VIEJO DE CALDAS  |
| 005     | VIEJO DE CALDAS  |
| 006     | BLANCO DEL VALLE |
+---------+------------------+
6 rows in set (0.00 sec)
 
mysql> SELECT ID_PROD,VR_PUBLI FROM PROD_PREC;
+---------+----------+
| ID_PROD | VR_PUBLI |
+---------+----------+
| 001     |     8000 |
| 002     |     8000 |
| 003     |     3500 |
| 004     |   110000 |
| 005     |    60000 |
| 006     |    50000 |
+---------+----------+
6 rows in set (0.00 sec)
 
mysql> SELECT FECHA,PRODU,UNDS FROM BARRA;
+--------+-------+------+
| FECHA  | PRODU | UNDS |
+--------+-------+------+
| 191028 | 002   |    2 |
| 191028 | 005   |    5 |
| 191028 | 002   |    1 |
+--------+-------+------+
3 rows in set (0.00 sec)
 
mysql> SELECT FECHA,ID_PROD,E_UNDS,S_UNDS FROM INVENTARIO;
+---------------------+---------+--------+--------+
| FECHA               | ID_PROD | E_UNDS | S_UNDS |
+---------------------+---------+--------+--------+
| 2019-10-28 00:00:00 | 001     |     24 |      0 |
| 2019-10-28 00:00:00 | 002     |      4 |      0 |
| 2019-10-31 00:00:00 | 002     |      0 |      2 |
+---------------------+---------+--------+--------+
3 rows in set (0.00 sec)

Pero al realizar esta consulta:
1
2
3
4
5
6
SELECT P.ID_PROD,P.DESCRIP,V.VR_PUBLI,IFNULL(SUM(B.UNDS),0) BARRA_UNDS,IFNULL(SUM(I.E_UNDS),0) ENTRA_UNDS_INV,IFNULL(SUM(I.S_UNDS),0) SALE_UNDS_INV
FROM PRODUCTOS P
join PROD_PREC V ON P.ID_PROD = V.ID_PROD
LEFT join BARRA B ON P.ID_PROD = B.PRODU
LEFT JOIN INVENTARIO I ON P.ID_PROD = I.ID_PROD
GROUP BY P.ID_PROD

Obtengo esto:
1
2
3
4
5
6
7
8
9
10
+---------+------------------+----------+------------+----------------+---------------+
| ID_PROD | DESCRIP          | VR_PUBLI | BARRA_UNDS | ENTRA_UNDS_INV | SALE_UNDS_INV |
+---------+------------------+----------+------------+----------------+---------------+
| 001     | POKER            |     8000 |          0 |             24 |             0 |
| 002     | AGUILA           |     8000 |          6 |              8 |             4 |
| 003     | GASEOSA          |     3500 |          0 |              0 |             0 |
| 004     | VIEJO DE CALDAS  |   110000 |          0 |              0 |             0 |
| 005     | VIEJO DE CALDAS  |    60000 |          5 |              0 |             0 |
| 006     | BLANCO DEL VALLE |    50000 |          0 |              0 |             0 |
+---------+------------------+----------+------------+----------------+---------------+

y deberia ser esto:
1
2
3
4
5
6
7
8
9
10
+---------+------------------+----------+------------+----------------+---------------+
| ID_PROD | DESCRIP          | VR_PUBLI | BARRA_UNDS | ENTRA_UNDS_INV | SALE_UNDS_INV |
+---------+------------------+----------+------------+----------------+---------------+
| 001     | POKER            |     8000 |          0 |             24 |             0 |
| 002     | AGUILA           |     8000 |          3 |              4 |             2 |
| 003     | GASEOSA          |     3500 |          0 |              0 |             0 |
| 004     | VIEJO DE CALDAS  |   110000 |          0 |              0 |             0 |
| 005     | VIEJO DE CALDAS  |    60000 |          5 |              0 |             0 |
| 006     | BLANCO DEL VALLE |    50000 |          0 |              0 |             0 |
+---------+------------------+----------+------------+----------------+---------------+

Como se observa se duplica el producto 002 al tener tanto en BARRA como INVENTARIO tiene mas de dos registros con el mismo producto, que debo hacer para que la consulta de las unidades correctas?
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
Imágen de perfil de Francisco
Val: 150
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

SUMA DUPLICADA

Publicado por Francisco (62 intervenciones) el 01/11/2019 18:42:57
Hola

Intenta esto:

1
2
3
4
5
6
7
8
9
SELECT
	p.id_prod,
	p.descrip,
	v.vr_publi,
	IFNULL( (SELEC SUM(b.unds) FROM barra AS b WHERE b.produ = p.id_prod ), 0) AS barra_und,
	IFNULL( (SELEC SUM(i.e_unds) FROM inventario AS i WHERE i.id_prod = p.id_prod ), 0) AS entra_unds_inv,
	IFNULL( (SELEC SUM(i.s_unds) FROM inventario AS i WHERE i.id_prod = p.id_prod ), 0) AS sale_unds_inv,
FROM productos AS p
	INNER JOIN prod_prec AS v ON v.id_prod = p.id_prod

Saludos
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