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 determinado
function 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 "
"
?>