Tema: SUM y JOIN
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/11/2009, 17:37
finord
 
Fecha de Ingreso: mayo-2005
Mensajes: 51
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: SUM y JOIN

Hola, aqui esta la estructura de las tablas. No la puse antes, porque creia que el fallo estaba en el join que hice yo.

Código sql:
Ver original
  1. CREATE TABLE IF NOT EXISTS `pos_loc_cln` (
  2.   `clid` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `fch` DATE NOT NULL,
  4.   `hor` TIME NOT NULL,
  5.   `hash` VARCHAR(255) NOT NULL,
  6.   `local` VARCHAR(115) NOT NULL,
  7.   `est` VARCHAR(255) NOT NULL,
  8.   `total` VARCHAR(255) NOT NULL,
  9.   `entrada` VARCHAR(255) NOT NULL,
  10.   `vuelta` VARCHAR(255) NOT NULL,
  11.   `cr_hor` TIME NOT NULL,
  12.   `ttop` VARCHAR(255) NOT NULL,
  13.   `tst` datetime NOT NULL,
  14.   `ts2` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  15.   PRIMARY KEY  (`clid`),
  16.   UNIQUE KEY `key` (`hash`)
  17. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=26 ;
  18.  
  19. -- --------------------------------------------------------
  20.  
  21. --
  22. -- Estructura de tabla para la tabla `pos_loc_tpv`
  23. --
  24.  
  25. CREATE TABLE IF NOT EXISTS `pos_loc_tpv` (
  26.   `vid` INT(11) NOT NULL AUTO_INCREMENT,
  27.   `pid` INT(255) NOT NULL,
  28.   `pnotes` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  29.   `fecha` DATE NOT NULL,
  30.   `pcat` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  31.   `prc` VARCHAR(255) NOT NULL,
  32.   `hora` TIME NOT NULL,
  33.   `opst` INT(11) NOT NULL,
  34.   `cta` VARCHAR(255) NOT NULL,
  35.   `nom` VARCHAR(255) NOT NULL,
  36.   `clid` INT(11) NOT NULL,
  37.   `local` VARCHAR(255) NOT NULL,
  38.   `dev` INT(11) NOT NULL,
  39.   `dvid` VARCHAR(255) NOT NULL,
  40.   `dpid` VARCHAR(255) NOT NULL,
  41.   `did` INT(11) NOT NULL,
  42.   `drid` VARCHAR(255) NOT NULL,
  43.   `key` VARCHAR(255) NOT NULL,
  44.   `octa` VARCHAR(255) NOT NULL,
  45.   `edid` INT(11) NOT NULL,
  46.   `dprc` INT(11) NOT NULL,
  47.   `dcta` INT(11) NOT NULL,
  48.   PRIMARY KEY  (`vid`)
  49. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=99 ;


Ejecutando esta consulta
Código sql:
Ver original
  1. SELECT SUM( cta ) , SUM( prc ) , COUNT( vid )
  2. FROM `pos_loc_tpv`
  3. WHERE fecha = '2009-11-08'

Me devuelve:
Código sql:
Ver original
  1. SUM(cta)    SUM(prc)    COUNT(vid)
  2. 32               20.8                     27

gnzsoloyo, he probado lo que me has puesto y da el mismo resultado. Sobre lo del where, cuando dije que puse dos where, me referia a que use where ... and .. (como la q aparece aqui), fallo mio por no ponerlo bien.

LA idea es sumar la cantidad de productos vendidos(cta) y que concuerden con las cantidades que devuelve pos_loc_cln.total. Y contar el numero de operaciones (vid) y clientes que se hayan producido ese dia, y donde el valor de dev sea igual a 0.

No se porque me salen un valores tan error, de hecho, suamdno todos los valores de de pos_loc_tpv.cta, sin tener en cuenta la fecha, me sale unos 100, mientras que con el JOIN me sale 300.

pd: he quitado el contar dev, porque no hay forma de contarlo sin que afecte a los demas.

Gracias

Última edición por finord; 09/11/2009 a las 17:51