Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Duda sobre suma (https://www.clubdelphi.com/foros/showthread.php?t=79668)

RebeccaGL 27-07-2012 19:55:53

Duda sobre suma
 
Por ejemplo tengo 2 tablas (Tabla1 y Tabla2) la Tabla1 esta enlazada con la Tabla2

Tabla1.ID1
Tabla1.TipDoc

Tabla2.ID2
Tabla2.Cant
Tabla2.Item

Código SQL [-]
select T1.TipDoc, 
         count(T1.TipDoc) as Movimientos,
         sum(T2.Cant) as Cant,
         T2.Item

from Tabla1.T1, Tabla2.T2

where  (T1.ID1 = T2.ID2)

group by (T1.TipDoc
)

Lo que pasa es lo siguiente solo tengo 2 movimientos en la Tabla1, en la clausula "count(T1.TipDoc) as Movimientos" me deberia devolver el resultado 2 y me devuelve 6.
La Tabla1 tiene dos registros, ahora bien cada registro de la Tabla1 le nacen 3 registros osea a la Tabla2 al hacer la consulta me pone asi.

Tabla1
ID TipDoc
-----------
1 Factura
2 Factura

Tabla 2
ID2 Cant Item
--------------------
1 1 Pollo
2 1 Asado
3 1 Pizza

Al hacer la consulta lo pone asi

TipoDoc Movimientos Cantidad
---------------------------------
Factura 6 3

En movimientos deberia ser 2 y no 6 como soluciono ese problema.
Me duplica los movimientos, sera porque las dos tablas estan unidas.

roman 27-07-2012 20:32:33

A mi me da el resultado correcto. Y nota que sum(Cant) debe ser 2 y no 3.

// Saludos

RebeccaGL 27-07-2012 20:54:23

sum(cant) esta bien

Yo me refiero a count(T1.TipDoc)

Lo expilcare mas sensillo es que a veces no me dejo entender.

Tengo 2 tablas relacionadas la Tabla1 y la Tabla2, ahora bien la Tabla1 tiene 2 registros la Tabla2 tiene 6 registros, debidamente enlazados con la Tabla1

Tabla1
Código SQL [-]
ID1 TipDoc
------------
 1   Factura
 2   Factura


Tabla2
Código SQL [-]
ID1 ID2 Cant    Item
---------------------- 
 1    1   1     Pizza
 1    2   1     Asado
 1    3   1     Milanesa
 2    1   1     Ensalada
 2    2   1     Helado
 2    3   1     Jugo

Ahora bien, al hacer la consulta con las dos tablas deberia darme 2 facturas y no 6 facturas, ese es mi problema. Cuando sumo los datos de la segunda tabla todo sale bien pero cuando sumo los datos de la primera tabla me los duplica y con mas registros me los triplica y cuadruplica. Ahora si fuesen 3 tablas en la consulta siempre calcula bien la ultima tabla pero la primera y la segunda los duplica.

roman 27-07-2012 20:58:16

Cita:

Empezado por connor (Mensaje 438361)
sum(cant) esta bien

No. No está bien. Lo que pasa es que ahora ya cambiaste los datos. Con los nuevos datos, el resultado que obtienes es correcto. Tienes seis registros todos con el mismo TipoDoc, de manera que al agruparlos sigues teniendo seis registros.

// Saludos

roman 27-07-2012 21:00:37

Para que lo veas más claro, has esta consulta:

Código SQL [-]
select *
from Tabla1 T1, Tabla2 T2
where T1.ID1 = T2.ID2

Ahí verás que obtienes seis registros y todos tiene "Factura" como TipoDoc.

// Saludos

RebeccaGL 27-07-2012 21:01:50

Es que las dos tablas van en la consulta

from Tabla1.T1, Tabla2.T2

Es que lo que deseo es sacar el Total de Facturas

RebeccaGL 27-07-2012 21:03:29

Osea sumar los datos de la Tabla1 y los datos de la Tabla2

Si hize esa consulta me dan los 6 registros
pero como te dije deseo sacar el total de tipos de documentos = facturas y la suma de la tabla2

roman 27-07-2012 21:09:06

Pues eso. Todos tus documentos tienen el mismo tipo y de ese tipo hay seis registros al juntar las tablas.

// Saludos


La franja horaria es GMT +2. Ahora son las 17:51:18.

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