Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/07/2018, 03:49
mikil
 
Fecha de Ingreso: agosto-2002
Ubicación: Lleida
Mensajes: 506
Antigüedad: 21 años, 7 meses
Puntos: 0
update con el resultado de un select

tengo un tabla
Código SQL:
Ver original
  1. CREATE TABLE `_tmp_venedors` (
  2.     `vdor` SMALLINT(6) NOT NULL,
  3.     `normal_completa_unidades` INT(11) NULL DEFAULT '0',
  4.     `normal_completa_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  5.     `normal_completa_dtomedio` DOUBLE(9,2) NULL DEFAULT '0.00',
  6.     `normal_completa_vtamedia` DOUBLE(9,2) NULL DEFAULT '0.00',
  7.     `normal_sinmontura_unidades` INT(11) NULL DEFAULT '0',
  8.     `normal_sinmontura_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  9.     `normal_sinmontura_dtomedio` DOUBLE(9,2) NULL DEFAULT '0.00',
  10.     `normal_sinmontura_vtamedia` DOUBLE(9,2) NULL DEFAULT '0.00',
  11.     `reparaciones_unidades` INT(11) NULL DEFAULT '0',
  12.     `reparaciones_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  13.     `sustituye_unidades` INT(11) NULL DEFAULT '0',
  14.     `sustituye_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  15.     `garantia_unidades` INT(11) NULL DEFAULT '0',
  16.     `garantia_importes` DOUBLE(9,2) NULL DEFAULT '0.00',
  17.     `promo_primera_operaciones` INT(11) NULL DEFAULT '0',
  18.     `promo_primera_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  19.     `promo_primera_vtamedia` DOUBLE(9,2) NULL DEFAULT '0.00',
  20.     `promo_segunda_consuple` INT(11) NULL DEFAULT '0',
  21.     `promo_segunda_sinsuple` INT(11) NULL DEFAULT '0',
  22.     `promo_segunda_importe` DOUBLE(9,2) NULL DEFAULT '0.00',
  23.     `promo_segunda_vtamedia` DOUBLE(9,2) NULL DEFAULT '0.00',
  24.     PRIMARY KEY (`vdor`),
  25.     UNIQUE INDEX `vdor` (`vdor`)
  26. )

donde debo acumular por vendedor los resultados de diferentes consultas sobre varias tablas para mostrar el resultado

como puedo actualizar los campos normal_completa_unidades, normal_completa_importe, normal_ completa_dto_medio y normal_completa_vtamedia de la consulta siguiente

Código SQL:
Ver original
  1. SELECT encargos.vendedorVta, COUNT(*) AS operaciones, SUM(encargos.impnetoVta) AS impvta,  round(avg(encargos.impdtoVta),2) AS avgdto, round(avg(impnetoVta),2) AS vtamedia
  2. FROM encargos
  3. WHERE anuladaVta<>"S" AND fechaVta BETWEEN '2018-07-01' AND '2018-07-31' AND promocionVta=0 AND TRIM(monturaVta)>''
  4. GROUP BY vendedorVta
  5. ORDER BY vendedorVta

pensaba que deberia ser algo similar al codigo que detallo pero esta mal construida la sent
Código SQL:
Ver original
  1. UPDATE tmp_venedors
  2. SET (normal_completa_unidades, normal_completa_importe, normal_ completa_dto_medio , normal_completa_vtamedia)
  3. FROM
  4. (SELECT encargos.vendedorVta, COUNT(*) AS operaciones, SUM(encargos.impnetoVta) AS impvta,  round(avg(encargos.impdtoVta),2) AS avgdto, round(avg(impnetoVta),2) AS vtamedia
  5. FROM encargos
  6. WHERE anuladaVta<>"S" AND fechaVta BETWEEN '2018-07-01' AND '2018-07-31' AND promocionVta=0 AND TRIM(monturaVta)>''
  7. GROUP BY vendedorVta)
  8.  
  9. WHERE vdor=vendedorVta

me podeis ayudar en esta instrucción.

Gracias

Última edición por gnzsoloyo; 24/07/2018 a las 08:18 Razón: Mal etiquetado