Ver Mensaje Individual
  #13 (permalink)  
Antiguo 10/10/2008, 01:30
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: recojer datos de la ultima fecha

Me dices que son importantes las secciones, pero no veo la relación entre las tablas, pues en la tabla gal debería haber un campo refseccion que contuviera el número del Idseccion de avisos_seccion de la sección correspondiente.

Sin preocuparte de la sección
Para el más reciente:
Código sql:
Ver original
  1. SELECT * FROM gal g INNER JOIN(SELECT generado FROM gal GROUP BY generado ORDER BY generado DESC LIMIT 0,1)T1 ON g.generado = t1.generado
Para el siguiente:
Código sql:
Ver original
  1. SELECT * FROM gal g INNER JOIN(SELECT generado FROM gal GROUP BY generado ORDER BY generado DESC LIMIT 1,1)T1 ON g.generado = t1.generado

Pero si quieres buscar por sección (he puesto no la variable, sino el dato del idseccion, concretamente el 2.
Para el más reciente:
Código sql:
Ver original
  1. SELECT g.Nombre, g.Imagen, g.Descripcion, ase.Seccion, g.generado
  2. FROM gal g
  3. INNER JOIN (
  4.  
  5. SELECT gal.generado
  6. FROM gal
  7. INNER JOIN avisos_seccion ON gal.refseccion = avisos_seccion.IdSeccion
  8. WHERE avisos_seccion.Idseccion =2
  9. GROUP BY gal.generado
  10. ORDER BY gal.generado DESC
  11. LIMIT 0 , 1
  12. )t1 ON t1.generado = g.generado
  13. INNER JOIN avisos_seccion ase ON ase.Idseccion = g.refseccion
  14. WHERE ase.Idseccion =2

Para el siguiente:
Código sql:
Ver original
  1. SELECT g.Nombre, g.Imagen, g.Descripcion, ase.Seccion, g.generado
  2. FROM gal g
  3. INNER JOIN (
  4.  
  5. SELECT gal.generado
  6. FROM gal
  7. INNER JOIN avisos_seccion ON gal.refseccion = avisos_seccion.IdSeccion
  8. WHERE avisos_seccion.Idseccion =2
  9. GROUP BY gal.generado
  10. ORDER BY gal.generado DESC
  11. LIMIT 1 , 1
  12. )t1 ON t1.generado = g.generado
  13. INNER JOIN avisos_seccion ase ON ase.Idseccion = g.refseccion
  14. WHERE ase.Idseccion =2

Algo de explicación para los dos últimos:
en el interior busco el idseccion 2 y agrupo por fecha ordenando en orden descendente y trayéndome el primero o el segundo mediante LIMIT 0,1 y LIMIT 1,1, respectivamente. Lo que me traigo realmente es la fecha mediante esa consulta a cuyo resultado aludo mediante el alias t1; luego mediante la consulta de idseccion 2 (hay que volver a hacerla, porque puede que otras idseccion aparezcan en esa fecha) entre los datos del cruce mediante inner join entre la tabla gal, que contiene el dato fecha generado, y ese generado de t1 , me traigo los datos que me interesen, usando para ello los inner join entre las dos tablas y la consulta interior cuyo alias es t1.
Puede parecer un poco lioso, y tal vez lo sea, pero creo que funciona.

Última edición por jurena; 10/10/2008 a las 04:08