public function productosMayoristasOrigen($fechaini, $fechafin, $condicion) { $query = new \yii\db\Query(); $date = new \DateTime($fechaini); $fechaini = $date->format('Y-d-m H:i:s'); $date = new \DateTime($fechafin); $fechafin = $date->format('Y-d-m H:i:s'); $query->select(['Producto.[producto],cod_producto,Origen.[origen],cod_origen,AVG(precio) as precio'])->from('Datos_generales_mayoristas')->innerJoin('Origen', 'Origen.codigo_origen = Datos_generales_mayoristas.cod_origen')->innerJoin('Localizacion', 'Localizacion.codigo_localizacion = Datos_generales_mayoristas.cod_localizacion')->innerJoin('Producto', 'Producto.codigo_producto = Datos_generales_mayoristas.cod_producto')->where("fecha <= '" . $fechaini . "'")->andWhere("fecha >= '" . $fechafin . "'")->andWhere($condicion)->orderBy('producto')->groupBy('producto,cod_producto,origen,cod_origen'); $rows = $query->all(DatosGeneralesMayoristas::getDb()); return $rows; }
/** * Devuelve una consulta con las medias para distintas semanas * @param string $condiciones */ public function consultarMediasSemanales($condiciones) { $query = new \yii\db\Query(); //Cambio de datepart(week,Datos_origen.fecha) por (datepart(DY, datediff(d,0,Datos_origen.fecha)/7*7+3)+6)/7 $query->select(['producto.producto, Localizacion.Localizacion, origen.origen, Round(avg(precio),2) as preciomedio, (datepart(DY, datediff(d,0,Datos_origen.fecha)/7*7+3)+6)/7 as Semana', 'DATEPART(year, Datos_origen.fecha) as anio'])->from('Datos_origen')->innerJoin('Origen', 'Origen.codigo_origen = Datos_origen.cod_origen')->innerJoin('Localizacion', 'Localizacion.codigo_localizacion = Datos_origen.cod_localizacion')->innerJoin('Producto', 'Producto.codigo_producto = Datos_origen.cod_producto')->where($condiciones)->groupBy(['Producto', 'Localizacion', 'Origen', '(datepart(DY, datediff(d,0,Datos_origen.fecha)/7*7+3)+6)/7', 'DATEPART(year, Datos_origen.fecha)'])->orderBy('anio, Semana, Producto'); $rows = $query->all(DatosGeneralesMayoristas::getDb()); return $rows; }