Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Suma duplicada consulta Mysql (https://www.clubdelphi.com/foros/showthread.php?t=94280)

Jose Roman 01-11-2019 09:27:49

Suma duplicada consulta Mysql
 
Cordial saludo,
Tengo las siguientes tablas en Mysql:

Código:

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:
Código:

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:
Código:

+---------+------------------+----------+------------+----------------+---------------+
| 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:
Código:

+---------+------------------+----------+------------+----------------+---------------+
| 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 mas de dos registros con el mismo producto, que debo hacer para que la consulta de las unidades correctas?

Casimiro Notevi 01-11-2019 12:12:14

¿Pero esto no es lo mismo que esto? :confused:

Jose Roman 01-11-2019 14:42:01

Cita:

Empezado por Casimiro Notevi (Mensaje 534188)
¿Pero esto no es lo mismo que esto? :confused:

Si Casimiro, trate de borrar el anterior hilo pero no supe como, en este inclui tanto las tablas como los datos que poseen para mayor comprension de la persona que me pueda ayudar. Brindo mis disculpas al foro por haber duplicado el tema.

Casimiro Notevi 01-11-2019 14:47:43

Los hilos se pueden borrar durante los primeros 30 minutos de su creación, luego no se pueden borrar.
Ya que no ha participado nadie más en el anterior, pondré un mensaje de enlace a éste.

Casimiro Notevi 01-11-2019 14:50:34

Creo que tu consulta será más fácil hacerla en un stored procedure.

orodriguezca 01-11-2019 19:54:33

En el GROUP BY se deberían incluir todas las columnas que no están siendo utilizadas por una función agregada, En este caso:

Código SQL [-]
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, 
  P.DESCRIP,
  V.VR_PUBLI

Jose Roman 01-11-2019 22:02:38

Gracias por tu ayuda me funciono


La franja horaria es GMT +2. Ahora son las 09:36:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi