MySQL组的总和问题

时间:2014-08-12 16:23:20

标签: mysql group-by sum

我有两张桌子:

prueba
cod varchar(25)   PK
nom varchar(100)
tip varchar(50)
des varchar(500)
pre double
can double
cla varchar(3)
fcm varchar(20)

inventario
loc varchar(20)
cod varchar(25) FK
can double
cve varchar(3)

表格与鳕鱼有关。 我有这个MySQL查询:

select inventario.cod as 'Código', inventario.can as 'Cantidad', inventario.cve as 'Clave', prueba.nom as 'Descripción', prueba.tip as 'Modelo', prueba.pre as 'Precio'
from inventario, prueba
where inventario.loc = 'XTORR' 
group by inventario.cod
order by inventario.cod ;

它会返回以下结果:

Código can cve  Descripción               Modelo Precio
20121   2   S   FUNDA MORRAL PERSONAJES 2        199
20122   1   S   FUNDA MORRAL PERSONAJES 2        199
20124   2   S   FUNDA MORRAL PERSONAJES 2        199
2014    4   S   FUNDA MORRAL PERSONAJES 2        199
2015    1   F   FUNDA MORRAL PERSONAJES 2        199

问题在于,2014年和2015年并没有通过

总结他们的价值观
XTORR   2014    4   S
XTORR   2014    2   S
XTORR   2015    1   F
XTORR   2015    1   F

2014年应该有6个可以,2015年应该有2个。但是,如果我使用sum()来发明,那么can值就可以了。

select inventario.cod as 'Código', sum(inventario.can) as 'Cantidad', inventario.cve as 'Clave', prueba.nom as 'Descripción', prueba.tip as 'Modelo', prueba.pre as 'Precio'
from inventario, prueba
where inventario.loc = 'XTORR' 
group by inventario.cod
order by inventario.cod ;

20121   3456    S   FUNDA MORRAL PERSONAJES 2       199
20122   1728    S   FUNDA MORRAL PERSONAJES 2       199
20124   3456    S   FUNDA MORRAL PERSONAJES 2       199
2014    10368   S   FUNDA MORRAL PERSONAJES 2       199
2015    3456    F   FUNDA MORRAL PERSONAJES 2       199

我该如何解决这个问题?感谢。

1 个答案:

答案 0 :(得分:0)

Inner Join解决了这个问题。

select inventario.cod as 'Código', sum(inventario.can) as 'Cantidad', inventario.cve as 'Clave', prueba.nom as 'Descripción', prueba.tip as 'Modelo', prueba.pre as 'Precio'
from inventario
INNER JOIN prueba on inventario.cod = prueba.cod
where inventario.loc = 'XTORR' 
group by inventario.cod
order by inventario.cod;

感谢你揭晓,PM 77-1。