Ver Mensaje Individual
  #10 (permalink)  
Antiguo 07/02/2009, 01:53
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: SELECTs anidados

Italico76,
Esta es mi propuesta:

Código sql:
Ver original
  1. SELECT c.ip, c.claves, c.veces
  2. FROM consultas c
  3. INNER JOIN (
  4.  
  5. SELECT ip
  6. FROM consultas
  7. WHERE filtrado =0
  8. ORDER BY fecha DESC , hora DESC
  9. LIMIT 60
  10. )T1 ON c.ip = t1.ip
  11. ORDER BY RAND( )
  12. LIMIT 30

He usado en el select interior ip como campo porque me parece que es un dato que no se repetirá en los campos, pero tampoco sé si es así. Igualmente he puesto filtrado dentro, lo que quiere decir que te buscará los 60 últimos con filtrado a 0; y luego esos los ordenará al azar y elegirá 30.
Si quieres que seleccione los 60 últimos tengan o no filtrado a 0 y luego que de esos elija 30 con filtrado a 0 tendrías que escribir esto (pero podría ocurrir que hubiera menos de 30, incluso ninguno):

Código sql:
Ver original
  1. SELECT c.ip, c.claves, c.veces
  2. FROM consultas c
  3. INNER JOIN (
  4.  
  5. SELECT ip
  6. FROM consultas
  7. ORDER BY fecha DESC , hora DESC
  8. LIMIT 60
  9. )T1 ON c.ip = t1.ip WHERE c.filtrado =0
  10. ORDER BY RAND( )
  11. LIMIT 30

Prueba y dinos.
Eso si ip no se repite. Si aparece en varios registros de consulta la misma ip, tendríamos que hacer un group by y sacar el max de date (o de la suma en tiempo de date y hora para hacerlo más exacto). Dinos si se repite y te preparamos una propuesta.

Última edición por jurena; 07/02/2009 a las 01:59