18/12/2015, 07:27
|
| | Fecha de Ingreso: febrero-2009
Mensajes: 44
Antigüedad: 15 años, 9 meses Puntos: 1 | |
Hacer dos consultas mysql seguidas en php Hola a todos, tengo un código de una consulta mysql que funciona perfectamente en phpmyadmin, es la siguiente:
Código:
SET @numero=0;
select @numero:=@numero+1 AS `posicion`, tot.idpiloto, tot.nombre_piloto, tot.temporadas, tot.puntos puntos, tot.coi, tot.moe , tot.mt mt, round((puntos/mt), 2) media_puntos, tot.victorias, tot.podiums, tot.vr, tot.pm, tot.mp, tot.pp, tot.primero, tot.segundo, tot.tercero from
(
SELECT idpiloto, nombre_piloto, count(idtemporada) temporadas, sum(puntos) puntos, sum(coi) coi, sum(moe) moe, sum(mt) mt, sum(victorias) victorias, sum(podiums) podiums, sum(vr) vr, round(avg(pm)) pm, min(mp) mp, max(pp) pp, sum(primero) primero, sum(segundo) segundo, sum(tercero) tercero
from resultados
group by idpiloto
order by sum(puntos) desc, sum(victorias) desc)tot
La primera linea me pone el contador a 0 y luego, a partir de la segunda línea, me genera una lista de clasificación numerada.
El problema lo tengo al pasar a php. Tengo el siguiente código y solo me funciona bien si quito la primera linea de mysql (SET @numero=0;) pero claro, al quitar la primera linea, no me numera las filas. Código PHP: <?php
$sConsulta = <<<CONSULTA
SET @numero=0;
select @numero:=@numero+1 AS `posicion`, tot.idpiloto, tot.nombre_piloto, tot.temporadas, tot.puntos puntos, tot.coi, tot.moe , tot.mt mt, round((puntos/mt), 2) media_puntos, tot.victorias, tot.podiums, tot.vr, tot.pm, tot.mp, tot.pp, tot.primero, tot.segundo, tot.tercero from
(
SELECT idpiloto, nombre_piloto, count(idtemporada) temporadas, sum(puntos) puntos, sum(coi) coi, sum(moe) moe, sum(mt) mt, sum(victorias) victorias, sum(podiums) podiums, sum(vr) vr, round(avg(pm)) pm, min(mp) mp, max(pp) pp, sum(primero) primero, sum(segundo) segundo, sum(tercero) tercero
from resultados
group by idpiloto
order by sum(puntos) desc, sum(victorias) desc)tot
CONSULTA;
require ('../../conexion_base_datos/datos_conexion.php');
$conexion = new mysqli($hostname, $username, $password, $database);
if ($conexion == FALSE){
echo('Error en la conexión.');
exit();
}
$resultado = $conexion->query($sConsulta);
if($resultado == FALSE){
echo('Error en la consulta.');
echo($conexion->error);
exit();
}
echo '<div class="seccion3" style="width: 1000px; margin-left: 5%;">';
echo '<table style="text-align: center;"><tr>';
echo '<td width="50px">Pos.</td>';
echo '<td width="200px">Piloto</td>';
echo '<td width="50px">Temp.</td>';
echo '<td width="80px">Puntos</td>';
echo '<td width="50px">C.O.I.</td>';
echo '<td width="50px">M.O.E.</td>';
echo '<td width="50px">M.T.</td>';
echo '<td width="50px">Media Ptos.</td>';
echo '<td width="50px">Vict.</td>';
echo '<td width="50px">Pod.</td>';
echo '<td width="50px">V.R.</td>';
echo '<td width="50px">P.M.</td>';
echo '<td width="50px">M.P.</td>';
echo '<td width="50px">P.P.</td>';
echo '<td width="50px">1º</td>';
echo '<td width="50px">2º</td>';
echo '<td width="50px">3º</td></tr>';
while($registro = mysqli_fetch_assoc($resultado)){
echo '<tr class="tr_estadisticas">';
echo '<td> </td>';
echo '<td style="text-align: left; padding-left: 5px;">'.$registro['nombre_piloto'].'</td>';
echo '<td>'.$registro['temporadas'].'</td>';
echo '<td>'.$registro['puntos'].'</td>';
echo '<td>'.$registro['coi'].'</td>';
echo '<td>'.$registro['moe'].'</td>';
echo '<td>'.$registro['mt'].'</td>';
echo '<td>'.$registro['media_puntos'].'</td>';
echo '<td>'.$registro['victorias'].'</td>';
echo '<td>'.$registro['podiums'].'</td>';
echo '<td>'.$registro['vr'].'</td>';
echo '<td>'.$registro['pm'].'</td>';
echo '<td>'.$registro['mp'].'</td>';
echo '<td>'.$registro['pp'].'</td>';
echo '<td>'.$registro['primero'].'</td>';
echo '<td>'.$registro['segundo'].'</td>';
echo '<td>'.$registro['tercero'].'</td></tr>';
}
echo '</table>';
echo '</div>';
$conexion->close();
?> Este es el error que me da: Cita: Error en la consulta.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select @numero:=@numero+1 AS `posicion`, tot.idpiloto, tot.nombre_piloto, tot.te' at line 2 ¿Qué hago mal?
Un saludo |