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

Una cuestion de order o group?

Estas en el tema de Una cuestion de order o group? en el foro de Mysql en Foros del Web. Buenas My problem: Tengo una tabla con comentarios, los comentarios se realizan en los respectivos artículos y se graba en qué articulo o noticia se ...
  #1 (permalink)  
Antiguo 15/10/2011, 04:32
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 16 años, 11 meses
Puntos: 3
Una cuestion de order o group?

Buenas

My problem:

Tengo una tabla con comentarios, los comentarios se realizan en los respectivos artículos y se graba en qué articulo o noticia se hizo.

Bien, en la home quiero sacar los ultimos 10 comentarios (por fecha o id, da igual), eso es facil pero mi consulta es:

puedo agruparlos una vez extraidos los 10 ultimos, para que se impriman seguidos los correspondientes a una misma noticia, es decir una vez sacados los 10 ultimos, ordenarlos por noticia y todo ello en el propio select.
  #2 (permalink)  
Antiguo 15/10/2011, 10:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Una cuestion de order o group?

SELECT t1.fecha, t1.idnoticia, t1.noticia, t1.idcomentario, t1.comentario FROM (SELECT c.idcomentario, c.comentario, c.fecha, n.noticia, n.idnoticia FROM comentarios c INNER JOIN noticias n ON c.idnoticia = n.idnoticia ORDER BY c.fecha DESC LIMIT 10)t1 ORDER BY t1.noticia
  #3 (permalink)  
Antiguo 16/10/2011, 05:03
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Una cuestion de order o group?

Gracias por la respuesta, me ha costado descifrar como funcionaba... jeje

Aún así no consigo resultados.

Solo guardo los comentarios en una tabla con esta estructura:

CREATE TABLE IF NOT EXISTS `comentarios` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`noticia` int(10) NOT NULL,
`nombre` varchar(255) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',
`email` varchar(255) COLLATE latin1_spanish_ci NOT NULL DEFAULT '',
`cuerpo` text COLLATE latin1_spanish_ci NOT NULL,
`fecha` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip` varchar(200) COLLATE latin1_spanish_ci NOT NULL,
`nivel` int(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci AUTO_INCREMENT=15 ;

El campo noticia es el que guarda el id de la noticia
Las noticias están en la tabla artículos y el campo relacionado es articulos.id, que se relaciona pues con comentarios.noticia

No obstante y al objeto de hacerlo más fácil, no había pensado relacionarlo, solo extraer los 10 ultimos comentarios por fecha y ordenarlos por el campo "noticia" que es el id de la otra tabla, la de los artículos.
Luego uso un array para imprimir el titulo del artículo al que pertenecen los comentarios. Osea que creo que el select sale más sencillo pero no tengo ni idea..... flojeo en mysql
  #4 (permalink)  
Antiguo 16/10/2011, 05:12
Avatar de intergus  
Fecha de Ingreso: mayo-2007
Mensajes: 126
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Una cuestion de order o group?

¡¡¡ CONSEGUIDO !!! Mil gracias

SELECT t1.fecha, t1.noticia, t1.cuerpo FROM (SELECT c.cuerpo, c.fecha, c.noticia FROM comentarios c ORDER BY c.fecha DESC LIMIT 10)t1 ORDER BY t1.noticia

Simplifiqué siguiendo la lógica y funciona ok.

Etiquetas: order, select, tabla
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 14:22.