Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

recojer datos de la ultima fecha

Estas en el tema de recojer datos de la ultima fecha en el foro de Mysql en Foros del Web. Que tal queridos internautas, les cuento mi problema para ver si me pueden ayudar a solucionarlo. Actualmente me encuentro haciendo un sistema de galerias de ...
  #1 (permalink)  
Antiguo 09/10/2008, 07:21
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
recojer datos de la ultima fecha

Que tal queridos internautas, les cuento mi problema para ver si me pueden ayudar a solucionarlo.

Actualmente me encuentro haciendo un sistema de galerias de fotos dinamicas, las cuales necesito organizar por fechas, mas que nada, las fotos ingresadas el ultimo y anteultimo día a la base de datos.

la solución mas rapida que encontre fue generar determinadas galerias de imagenes por día y hacer un limit en la consulta, pero la verdad es que no me sirve, y no se como lograr que mi consulta recoja los datos ordenandolos por fecha y tomando solo las dos mas actuales (En consultas diferentes, ya que van en distintos espacios de la misma página).

Mi codigo por ahora está asi, y me gustaría saber si es posible hacer lo antes mencioado, si me pueden ayudar se los voy a agradecer mucho!

Código:
mysql_select_db($database_db, $db);
$query_galeria = "SELECT *
				      FROM gal,avisos_seccion
                     WHERE gal.idAviso = avisos_seccion.idAviso
					   AND avisos_seccion.idSeccion = ".$seccion."  LIMIT 28 ";


MUCHAS GRACIAS!!
  #2 (permalink)  
Antiguo 09/10/2008, 08:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: recojer datos de la ultima fecha

Utiliza INNER JOIN para el cruce de tablas; tráete sólo las dos más recientes. Te he puesto tabla.campofecha, porque no sé cómo se llama el campo fecha y en qué tabla lo tienes. También he quitado las variables y el resto del código PHP para dejarlo como SQL

SELECT * FROM gal INNER JOIN avisos_seccion ON gal.idAviso = avisos_seccion.idAviso WHERE avisos_seccion.idSeccion = 2 ORDER BY tabla.campofecha DESC LIMIT 2;

No tienes por qué usar consultas diferentes, pues mediante programación puedes enviar el uno a un div y el otro a otro distinto.

Pero si te empeñas, creo que así te traerás el primero y el segundo:

SELECT * FROM gal INNER JOIN avisos_seccion ON gal.idAviso = avisos_seccion.idAviso WHERE avisos_seccion.idSeccion = 2 ORDER BY tabla.campofecha DESC LIMIT 0,1;

SELECT * FROM gal INNER JOIN avisos_seccion ON gal.idAviso = avisos_seccion.idAviso WHERE avisos_seccion.idSeccion = 2 ORDER BY tabla.campofecha DESC LIMIT 1,1;
  #3 (permalink)  
Antiguo 09/10/2008, 08:13
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

Muchas gracias Jurena, en mi cabeza se generaban miles de codigos pero jamas se me ocurrio hacer un order by fecha desc con limit 1, jajaja.

con respecto al INNER JOIN, creo que limpia mucho mas la consulta, vamos a probar que tal y te aviso.

Muchisimas gracias otra vez!!
  #4 (permalink)  
Antiguo 09/10/2008, 08:29
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

funciona perfecto, muchas gracias!!!!!
  #5 (permalink)  
Antiguo 09/10/2008, 09:14
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

ahora que empiezo a cargar muchos contenidos, me di cuenta de que no funciona, todas las fechas generadas automaticamente estan perfecto, pero solamente se me ve una sola imagen, jajaja. tenes idea que puede ser? hay algo que esta fallando en el LIMIT, cuando agrego limit 0,1 refiriendome a que limite la fecha, limita la cantidad de fotos.
  #6 (permalink)  
Antiguo 09/10/2008, 10:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: recojer datos de la ultima fecha

quizás no te he entendido. En la consulta cuántas imágenes quieres descargarte, y cuántas quieres que te muestre en uno u otro espacio. Yo entendí que sólo querias traerte las dos últimas, y además hacerlo en dos consultas para colocarlas en distintos lugares. Si es así, sólo te traerá 1. La primera consulta de las dos te trae 1 empezando por el 0, la primera que cumple la condición del where y ocupa esa primera posición tras la ordenación; con el 1,1 te trae también una, pero empezando desde la segunda, pues, como ves, el primer dígito del limit comienza por 0.
Pero esto es sólo si quieres traerte sólo esas dos imágenes...
  #7 (permalink)  
Antiguo 09/10/2008, 10:30
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

Que tal jurena, ante todo gracias por tu ayuda, y tu tiempo, en realidad lo que estoy buscando es que solo se muestren las imagenes de la ultima fecha, no importa la cantidad,

por ejemplo, hoy es 9 de octubre, entonces que solo se muestren todas las fotos del 9 de octubre, y en otro div, las fotos del 8 de octubre, es posible hacerlo? porque la verdad que yo no lo sé.

vuelvo a agraderte!
  #8 (permalink)  
Antiguo 09/10/2008, 10:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: recojer datos de la ultima fecha

Mediante dos consultas, como pedías:

Este para el más reciente
SELECT t.id, t.imagen, t.fecha FROM tabla t INNER JOIN (SELECT fecha FROM tabla GROUP BY fecha ORDER BY fecha DESC LIMIT 0,1)t1 ON t1.fecha = t.fecha

y este para el siguiente
SELECT t.id, t.imagen, t.fecha FROM tabla t INNER JOIN (SELECT fecha FROM tabla GROUP BY fecha ORDER BY fecha DESC LIMIT 1,1)t1 ON t1.fecha = t.fecha

puedes añadir un ORDER BY al final de cada una de las consultas para ordenarlas por otro criterio, además del de la fecha.
  #9 (permalink)  
Antiguo 09/10/2008, 11:04
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

exelente, vamos a probar que tal y te comento,

vuelvo a agradecerte en cada uno de mis post jaja :)
  #10 (permalink)  
Antiguo 09/10/2008, 11:36
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

lamentablemente no puedo adaptarlo a mi consulta, será que soy muy malo en esto de BDS,

si la uso tal cual me la mandaste, obviamente editando todo por los datos de mis tablas, me dice que date (en mi caso Generado) es ambiguo.

Lo que no entiendo es porque comparas, o igualas t1.fecha = t.fecha yo solamente utilizo fecha en una de mis tablas, en las que contienen las galerias, no las secciones, es bastante mas enroscado de lo que yo creia esto.

otra cosa mas, intente adaptarlo tambien despues del INNER JOIN de las secciones de mi galería, pero tampoco funciona, las secciones son fundamentales tambien.


Saludos!!! gracias por su tiempo!
  #11 (permalink)  
Antiguo 09/10/2008, 12:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: recojer datos de la ultima fecha

Danos los datos de tus tablas, nombres y campos y te prepararemos la consulta. Lo que yo he hecho es una consulta para sacar agrupando las fechas más recientes, y luego un cruce de datos entre esa primera consulta que he llamado t1 y la tabla tuya, a la que he llamado t, esto al igual que t1 es un alias, un sobrenombre. Claro que da problemas si pones date y no especificas a qué date se refiere, si al date de la tabla tuya o al generado en la consulta por fecha agrupando, a la que yo llamo t1.
Pon tus datos y te echaremos una mano. No desesperes: esto no se aprende más que cometiendo errores...
  #12 (permalink)  
Antiguo 09/10/2008, 14:04
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

Jurena, perdon por no responder pronto, tuve que salir de mi puesto de trabajo, pero aca estoy de nuevo, los datos de mis tablas son los siguientes:

CREATE TABLE `gal` (
`idAviso` int(11) NOT NULL auto_increment,
`Nombre` text NOT NULL default '',
`Imagen` text NOT NULL default '',
`Descripcion` text NOT NULL,
`Sponsor` text NOT NULL,
`Generado` date NOT NULL,
PRIMARY KEY (`idAviso`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='listado de fhgs' AUTO_INCREMENT=1 ;


CREATE TABLE `avisos_seccion` (
`idSeccion` int(11) NOT NULL default '0',
`Seccion` varchar(20) NOT NULL default '',
`Varios` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


como podrás ver, es solamente una tabla, que contiene todas las imagenes y las separa por secciones con la tabla avisos_seccion.

yo, por supuesto he cambiado todos los valores que me has dado en las consultas, pero igualmente no me funciono,

esperemos que funcione, asi por lo menos aprendo otra vez gracias a forosdelweb y los usuarios de el, que siempre me han echado una mano cada vez que necesito algo.

muchas gracias por responder tan pronto todos los mensajes :)
  #13 (permalink)  
Antiguo 10/10/2008, 01:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
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
  #14 (permalink)  
Antiguo 10/10/2008, 10:23
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Respuesta: recojer datos de la ultima fecha

de puta madre, exelente Jurena, voy a trabajar en esos codigos a ver si funcionan correctamente, con todo lo que explicaste, creo dar por finalizada la pregunta del thread, la verdad te pasaste,


muchas gracias!!!!!
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 05:17.