Foros del Web » Programando para Internet » PHP »

Solucionar consultas anidadas en php

Estas en el tema de Solucionar consultas anidadas en php en el foro de PHP en Foros del Web. Buenas, posteé esto en el foro Mysql, pero ante la imposibilidad de hacer consultas anidadas me gustaría saber como solucionar el tema en php. Cita: ...
  #1 (permalink)  
Antiguo 29/07/2006, 09:16
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Solucionar consultas anidadas en php

Buenas, posteé esto en el foro Mysql, pero ante la imposibilidad de hacer consultas anidadas me gustaría saber como solucionar el tema en php.

Cita:
Suponiendo que tenemos una tabla tal que asi:

fichas

[ id | nombre | puntos ]

Quiero que me devuelva de las ultimas 50 fichas, las 20 que tenga mas puntos.

O ya complicando un poco más el tema, a ver como me explico, que me ordenen los 20 que tengan más valor, ese valor lo sacaría segun su id y sus puntos (alguna formula que aun no tengo decidida). Por ejemplo podia ser: 10 * id + puntos.

Es para php, asi que si no es posible sacando directamente los datos mediante la consulta, como sería.

Saludos y gracias.
Un saludo, gracias.
  #2 (permalink)  
Antiguo 29/07/2006, 11:39
Avatar de Riven-Ward  
Fecha de Ingreso: julio-2006
Mensajes: 33
Antigüedad: 17 años, 9 meses
Puntos: 0
No te entendí muy bien pero aver si te funciona esto:

Código:
<?php
include ("conexion.php");
$sql = mysql_query ("SELECT * FROM fichas ORDER BY puntos DESC LIMIT 0,20");
//Luego con un while recorres todos los datos que obtuviste
?>
Salu2!
  #3 (permalink)  
Antiguo 29/07/2006, 13:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Eso me coje los 20 elementos con mas puntos de toda la lista, y yo no lo quiero asi, yo quiero coger los 20 elementos con mas puntos pero SOLO de los 50 ultimos insertados en la lista.
  #4 (permalink)  
Antiguo 29/07/2006, 13:10
Avatar de Riven-Ward  
Fecha de Ingreso: julio-2006
Mensajes: 33
Antigüedad: 17 años, 9 meses
Puntos: 0
Ah OK, entonces ordena por ID y por puntos:

Código PHP:
<?php
include ("conexion.php");
$sql mysql_query ("SELECT * FROM fichas ORDER BY id, puntos DESC LIMIT 0,20");
//Luego con un while recorres todos los datos que obtuviste
?>
Ojalá te sirva.

Salu2!
  #5 (permalink)  
Antiguo 29/07/2006, 13:31
Avatar de Infernal  
Fecha de Ingreso: septiembre-2004
Ubicación: Tamaulipas, Mexico
Mensajes: 124
Antigüedad: 19 años, 7 meses
Puntos: 0
Algo un poco mas complicado, pero creo que es exactamente lo que buscas:

Código PHP:

mysql_query
("SELECT * FROM fichas WHERE id >= ((SELECT id FROM fichas ORDER BY id DESC LIMIT 1) - 50) ORDER BY puntos DESC LIMIT 0, 20"); 
Saludos
  #6 (permalink)  
Antiguo 31/07/2006, 11:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Pues..... a parte de que no me deja el mysql hacer consultas anidadas. Aunque se soluciona haciendo primero una, cogiendo el valor y luego haciendo la otra...

Pero, esa consulta no sería válida, ya que si faltan id's (porque hayan sido borrados) ya no serian los 50 ultimos, sería (ultimoID - 50) si alguno falta ya son menos :)

Gracias de todas formas.
  #7 (permalink)  
Antiguo 31/07/2006, 12:02
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Cita:
Iniciado por Riven-Ward
Ah OK, entonces ordena por ID y por puntos:

Código PHP:
<?php
include ("conexion.php");
$sql mysql_query ("SELECT * FROM fichas ORDER BY id, puntos DESC LIMIT 0,20");
//Luego con un while recorres todos los datos que obtuviste
?>
Ojalá te sirva.

Salu2!
Eso no es lo que yo busco, eso me devuelve los 20 ultimos. ;)

Gracias de todas formas.
  #8 (permalink)  
Antiguo 29/09/2006, 05:56
 
Fecha de Ingreso: mayo-2005
Mensajes: 103
Antigüedad: 19 años
Puntos: 1
Esta consulta la hice hace tiempo pero aún no tengo la solución, lo subo a ver si ahora tengo más suerte.

Un saludo.
  #9 (permalink)  
Antiguo 29/09/2006, 07:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Es para php, asi que si no es posible sacando directamente los datos mediante la consulta, como sería.

No entendí por qué dices "es para PHP .. " y que no se puede hacer en una consulta SQL.

En SQL tu puedes "operar" .. puedes incluso hacer condicionales (if) .. y muchas cosas más que un simple "SELECT" y traerte unos pocos datos tal cual salen.

Tienes que definir bien tu problema ... Dices:
"Quiero que me devuelva de las ultimas 50 fichas, las 20 que tenga mas puntos."

En definitiva lo que interesa son esas 20 .. u ordenar esas 50 .. Si realmente no te interesan el orden de los 30 resultados fuera de los 20 que si que te interesa ordenar de esos 50 en total. Se entiende? .. en resumen, si el orden te dá igual .. que más te dá si está ordenado (así reduces mucho la solución a un problema de este estilo).

Si tu quieres "jugar" con los "últimos 50" resultados. En SQL puedes hacer "subconsultas" (dependiendo de la versión de Msyql que uses que no especificas!). Te recomiendo indicar la versiónd e Msyql que usas y consultar este tema concreto en el foro de "Base de datos -> Mysql".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 27/05/2011, 12:22
 
Fecha de Ingreso: mayo-2011
Ubicación: -
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Problema con el manejo de consultas en php

Para hacer ese tipo de consultas no solo hay que ver el php, si no tambn el html algo de javascript y combinar codigos

Última edición por ealonsosm; 27/05/2011 a las 13:14
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 07:40.