Necesidad:
Se necesita mostrar en pantalla las ventas por tienda ordenanos de mayor a menor
Se debe de mostrar la posición de venta por tienda, es decir enumerarlas, 1 para la mejor venta, N para la venta mas baja.
Solución:
Una solución (no recomendada) es hacer una consulta por tienda solicitando las ventas en orden descendente. Esto se complica cuando en lugar de 3 tiendas tenemos 20.
Se tendrían que hacer 20 consultas.
Según mi experiencia es preferible, generar una consulta única y trabajar con el resultado en el PHP.
CÓDIGO://Esta Funcion ordena un array multidimensional por un campo determinadofunction topVentas(array $array, $key, $tda="GRAL",$asc = false) { $tda = ($tda=="GRAL")?"GRAL":"TDA$tda";
$result = array(); $values = array();
foreach ($array as $id => $value) { $values[$id] = isset($value[$key]) ? $value[$key] : ''; }// end of foreach
if ($asc) {asort($values);} else {arsort($values);}
//Obtiene Numero de Posicion y Acumula la Venta Total $i=1; foreach ($values as $key => $value) { $result[$key] = $array[$key]; $result[$key]["pos$tda"] = $i; $i++; }// end of foreach return $result;}//end of topVentas
//Realiza Consulta$queryVtas="select articulo, vta1, vta2, vta3, totalVtas from tabla_ventas"$result=mssql_query($queryVtas) or die ("ERROR...");
while ($row =mssql_fetch_array($result)){ $salida[]=$row;}
//Ordenamos el arreglo por cada tienda y agrega columna con la posicion $salida = topVentas( $salida, "vta1", "1") $salida = topVentas( $salida, "vta2", "2") $salida = topVentas( $salida, "vta3", "3") $salida = topVentas( $salida, "totalVtas", "GRAL") echo "";print_r($salida);echo ""?>
No hay comentarios.:
Publicar un comentario