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

GROUP BY: tomar 1 registro por grupo

Estas en el tema de GROUP BY: tomar 1 registro por grupo en el foro de Mysql en Foros del Web. Hola a todos, estoy atascado con este problema: Necesito una SQL que saque para cada foto el comentario más reciente, es decir, para cada grupo ...
  #1 (permalink)  
Antiguo 26/12/2005, 05:24
Avatar de txus35  
Fecha de Ingreso: mayo-2005
Mensajes: 42
Antigüedad: 18 años, 11 meses
Puntos: 0
GROUP BY: tomar 1 registro por grupo

Hola a todos, estoy atascado con este problema:

Necesito una SQL que saque para cada foto el comentario más reciente, es decir, para cada grupo GROUP BY que tome el comentario con la fecha más reciente. Alguna idea ? , debe ser fácil pero llevo ya tiempo atascado.

Trabajo con PHP y MySQL y tengo 2 tablas "Fotos" y "Comentarios" relacionadas por el campo "IdFoto", es decir: una foto puede tener varios comentarios.

CREATE TABLE `Fotos` (
`IdFoto` int(11) unsigned NOT NULL auto_increment,
`Campo2` varchar(100) NOT NULL default '',
`Campo3` varchar(50) NOT NULL default '',
PRIMARY KEY (`IdFoto`)
) TYPE=MyISAM PACK_KEYS=1 AUTO_INCREMENT=50 ;

CREATE TABLE `Comentarios` (
`IdComentario` int(11) unsigned NOT NULL auto_increment,
`IdFoto` int(11) unsigned NOT NULL default '0',
`Autor` varchar(50) NOT NULL default '',
`Fecha` datetime NOT NULL default '0000-00-00 00:00:00',
`Texto` text NOT NULL,
PRIMARY KEY (`IdComentario`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;
  #2 (permalink)  
Antiguo 26/12/2005, 13:29
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
lo que puedes hacer es incluir en tu consulta ... order by Fecha DESC; ... esto tomara la más reciente fecha que se haya ingresado en tu página...
  #3 (permalink)  
Antiguo 26/12/2005, 13:48
Avatar de txus35  
Fecha de Ingreso: mayo-2005
Mensajes: 42
Antigüedad: 18 años, 11 meses
Puntos: 0
Pregunta

Gracias Mauled, actualmente tengo ésto:

"SELECT Comentarios.*, Fotos.*
FROM Comentarios INNER JOIN Fotos
ON Comentarios.IdFoto = Fotos.IdFoto
GROUP BY Comentarios.IdFoto, Fecha DESC
ORDER BY Fecha DESC LIMIT 4"


Pero no funciona porque toma los 4 últimos comentarios realizados sin agruparlos por foto. Es decir, toma los 4 últimos comentarios aunque sean de la misma foto y yo lo que quiero es que tome sólo el último comentario de cada foto y que, de todos estos comentarios, tome los 4 más recientes.
  #4 (permalink)  
Antiguo 30/12/2005, 00:15
Avatar de txus35  
Fecha de Ingreso: mayo-2005
Mensajes: 42
Antigüedad: 18 años, 11 meses
Puntos: 0
Creo que ésto quizás pòdría hacerse con una subconsulta pero no sé cómo.
  #5 (permalink)  
Antiguo 04/01/2006, 14:35
Avatar de txus35  
Fecha de Ingreso: mayo-2005
Mensajes: 42
Antigüedad: 18 años, 11 meses
Puntos: 0
Mi versión de MySQL (4.0.26) no soporta subconsultas y debo buscar otra alternativa.
He leido por ahí que versiones MySQL 4.1.X sí que permiten subconsultas.
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 19:34.