Foros del Web » Programando para Internet » PHP »

Agrupar sentencias

Estas en el tema de Agrupar sentencias en el foro de PHP en Foros del Web. Buenas, tengo una página en la que hago 6 consultas del modo siguiente: Código PHP: $result  =  mysql_query ( "select * from RANKING where JORNADA = '1' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC" , $link )or die( mysql_error ());; ...
  #1 (permalink)  
Antiguo 27/01/2003, 10:39
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Agrupar sentencias

Buenas, tengo una página en la que hago 6 consultas del modo siguiente:

Código PHP:
$result mysql_query("select * from RANKING where JORNADA = '1' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());;
   
$result2 mysql_query("select * from RANKING where JORNADA = '2' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());; 
    
$result3 mysql_query("select * from RANKING where JORNADA = '3' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());; 
    
$result4 mysql_query("select * from RANKING where JORNADA = '4' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());;
    
$result5 mysql_query("select * from RANKING where JORNADA = '5' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());;
    
$result6 mysql_query("select * from RANKING where JORNADA = '6' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error());; 
Los "$row = mysql_fetch_array($result*)" aparecen cada uno de los 6 correspondientes en una tabla diferente de mi página las cuales muestran los resultados obtenidos; y mi pregunta es si existe alguna forma de agrupar dichas sentencias en una sola, tomando como variable la JORNADA.

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 27/01/2003, 10:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No se si habrá mas de 6 "JORNADA" .. pero de todas formas eso lo puedes resumir usando operadores "logicos" para determinar un rango.

Código PHP:
$result mysql_query("select * from RANKING where (JORNADA>0 and JORNADA <7) and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC",$link)or die(mysql_error()); 
Y luego .. obviamente un solo While ($row=mysql_fecth_xxx ....

Un saludo,
  #3 (permalink)  
Antiguo 27/01/2003, 13:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Con la solucion de Cluster solo obtienes un "recordset" con todos los resultados de las 6 jornadas ordenados por puntuacion. Si eso es lo que necesitabas, perfecto.

Pero creo que quizas te referias a defiiendo una vez la consulta, hacer 6 consultas diferentes pasando como parametro la jornada. Algo asi como una consulta prametrica. Para poder usar un bucle. Esto lo puedes hacer con ayuda de sprintf(). Seria algo asi:
Código PHP:
$consulta_base="select * from RANKING where JORNADA='%s' and ID_TORNEO= '$id_torneo' AND GANA_PIERDE = 'Sí' order by PUNTOS DESC";
for (
$i=1;$i<7;$i++)
{
  
$consulta=sprintf($consulta_base,$i);
  
$result=mysql_query($consulta,link) or die (mysql_error());
  while (
$row=mysql_fetch_array())
  {
    
// mostramos la tabla correspondiente a la jornada $i
  
}
  
mysql_free_result($result);

o algo parecido, no lo he probado.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 28/01/2003, 02:56
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 15 años, 6 meses
Puntos: 0
Personalmente tengo un poco de fobia a printf, ya que (por puro desconocimiento del método) lo usé muy a menudo en mi última web que ando diseñando y me produjo más inconvenientes que soluciones a la hora de la libertad para jugar con los datos (repito, no es más que desconocimiento) y es que no poder ver las variables que uso sino sólo %s o %d...

Supongo que debo seguir avanzando en conocimientos sobre el tema.

Muchas gracias compañeros!!
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.