Ver Mensaje Individual
  #4 (permalink)  
Antiguo 02/05/2008, 04:58
kitosss
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Consulta MySQL -> No devuelve todo lo que quiero!

Cita:
Iniciado por falotron Ver Mensaje
Llevas mucha razón... Era éso
Muchas gracias!

Ahora... una vez superado el primer escollo, viene el 2º problema

En la tabla, como comentaba, hay varios registros por cada usuario, y lo que me interesa a mí es que para cada usuario el bucle se ejecute 1 sola vez
¿Cómo lo podría hacer?

Por si ayuda muestro la página
http://www.falotron.com/modules.php?name=stakes_testing&file=usuario

Y el código entero
Código:
##
## Vamos recogiendo usuario a usuario
##

$consulta = "SELECT * FROM apuestas_OK ORDER BY usuario ASC";
$resultado = $db->sql_query($consulta);
while ($row = $db->sql_fetchrow($resultado)) {

$usuario=$row['usuario'];

##
## Recogemos el nº total de stakes
##

$sql = "SELECT usuario, procesada FROM apuestas_OK WHERE (usuario = '$usuario')";
$result = $db->sql_query($sql);
echo "<tr><td><b>$usuario</b></td>";
$cuento = mysql_num_rows($result);
echo "<td><font color=\"blue\">$cuento</font></td>";

##
## Recogemos el nº total de stakes > 2.99 + el Stake Medio en Apuestas Acertadas
##

$acertadas_ok = "SELECT stake FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '2') AND (stake > '2.99') ";
$result = $db->sql_query($acertadas_ok);
$cuento1 = mysql_num_rows($result);
echo "<td><font color=\"green\"><b>$cuento1</b></font> ";

$acertadas_ok_avg = "SELECT AVG(stake) FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '2') AND (stake > '2.99') ";
$result = $db->sql_query($acertadas_ok_avg);
$row = $db->sql_fetchrow($result);
$stake_medio1 = $row['AVG(stake)'];
echo "(<I>";
echo round($stake_medio1, 2);
echo "</I>)</td>";

##
## Recogemos el nº total de stakes < 3 + el Stake Medio en Apuestas Acertadas
##

$acertadas_ko = "SELECT stake FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '2') AND (stake < '3.00') ";
$result = $db->sql_query($acertadas_ko);
$cuento2 = mysql_num_rows($result);
echo "<td><font color=\"red\"><b>$cuento2</b></font> ";

$acertadas_ko_avg = "SELECT AVG(stake) FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '2') AND (stake < '3.00') ";
$result = $db->sql_query($acertadas_ko_avg);
$row = $db->sql_fetchrow($result);
$stake_medio2 = $row['AVG(stake)'];
echo "(<I>";
echo round($stake_medio2, 2);
echo "</I>)</td>";

##
## Recogemos el nº total de stakes < 3 + el Stake Medio en Apuestas Falladas
##

$falladas_ok = "SELECT stake FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '3') AND (stake < '3.00') ";
$result = $db->sql_query($falladas_ok);
$cuento3 = mysql_num_rows($result);
echo "<td><font color=\"green\"><b>$cuento3</b></font> ";

$falladas_ok_avg = "SELECT AVG(stake) FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '3') AND (stake < '3.00') ";
$result = $db->sql_query($falladas_ok_avg);
$row = $db->sql_fetchrow($result);
$stake_medio3 = $row['AVG(stake)'];
echo "(<I>";
echo round($stake_medio3, 2);
echo "</I>)</td>";

##
## Recogemos el nº total de stakes > 2.99 + el Stake Medio en Apuestas Falladas
##

$falladas_ko = "SELECT stake FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '3') AND (stake > '2.99') ";
$result = $db->sql_query($falladas_ko);
$cuento4 = mysql_num_rows($result);
echo "<td><font color=\"red\"><b>$cuento4</b></font> ";

$falladas_ko_avg = "SELECT AVG(stake) FROM apuestas_OK WHERE (usuario = '$usuario') AND (procesada = '3') AND (stake > '2.99') ";
$result = $db->sql_query($falladas_ko_avg);
$row = $db->sql_fetchrow($result);
$stake_medio4 = $row['AVG(stake)'];
echo "(<I>";
echo round($stake_medio4, 2);
echo "</I>)</td>";

##
## Se calcula el Coeficiente del peñista, según sus stats de stakes
##

$coef1 = $cuento1*$stake_medio1;
$coef2 = $cuento2*$stake_medio2;
$coef3 = $cuento3*$stake_medio3;
$coef4 = $cuento4*$stake_medio4;
echo "<td>";
echo $coef1-$coef2+$coef3-$coef4;
echo "</td>";
echo "</tr>";

}

##
## Cerramos la Tabla
##
al seleccionar el usuario hazlo con el DISTINCT