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

Ordenar temas de foro por fecha de última respuesta

Estas en el tema de Ordenar temas de foro por fecha de última respuesta en el foro de Mysql en Foros del Web. Bueno, antes de nada, soy nuevo en el foro, y ando algo enfermo por contagio, así que no sé si debería presentarme en alguna sección. ...
  #1 (permalink)  
Antiguo 22/04/2008, 10:03
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
Ordenar temas de foro por fecha de última respuesta

Bueno, antes de nada, soy nuevo en el foro, y ando algo enfermo por contagio, así que no sé si debería presentarme en alguna sección. De todos modos, procuraré echar una mano dentro de mis posibilidades en el foro.


Actualmente estoy programando un foro desde 0, y me ocurre el siguiente problema: necesito ordenar los temas de una categoría de modo descendente en cuanto a fecha de última respuesta en estos.

Para ordenar los temas de determinada categoría la base de datos deberá trabajar con estas tablas:
  • forotemas
  • fororespuestas

fororespuestas consta del campo fecha, el cual deseo utilizar para ordenar los temas por fecha de última respuesta:
  • fecha
  • id_tema


forotemas contiene los siguientes campos necesarios para enlazarlo con las respuestas:
  • id_tema


Querría evitar crear un campo en forotemas con el nombre "fecha_ultima_respuesta", donde lo actualizara cada vez que se escribiesen nuevas respuestas, ya que lo veo un tanto chapucero.

Nota: Algunas tablas no fueron mencionadas dado que eran secundarias, pero de todos modos, las he copiado en la siguiente consulta que intenté crear para el fin buscado.

Código:
SELECT
	forotemas.titulo as titulo,
	forotemas.id_tema as id_tema,
	forotemas.visitas as visitas,
	forotemas.autor_visitante as autor_visitante,
	usuarios_registrados.nombre_usuario as nombre_usuario
						
	FROM forotemas
	inner join usuarios_registrados
	on forotemas.id_autor = usuarios_registrados.id_usuario
						
	inner join fororespuestas
	on forotemas.id_tema = forotemas.id_tema
						
	where forotemas.id_categoria = '$id_categoria'
	GROUP BY forotemas.id_tema
	order by fororespuestas.fecha Desc

Muchas gracias por su tiempo.
  #2 (permalink)  
Antiguo 22/04/2008, 12:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Ordenar temas de foro por fecha de última respuesta

Código:
SELECT
	forotemas.titulo as titulo,
	forotemas.id_tema as id_tema,
	forotemas.visitas as visitas,
	forotemas.autor_visitante as autor_visitante,
	usuarios_registrados.nombre_usuario as nombre_usuario
						
	FROM (forotemas
	LEFT join usuarios_registrados
	on forotemas.id_autor = usuarios_registrados.id_usuario)
						
	LEFT join (SELECT id_tema, MAX(fecha) as ultimafecha 
                                             FROM fororespuestas
                                             GROUP BY id_tema) as respuestas
                           ON forotemas.id_tema=respuestas.id_tema
						
	where forotemas.id_categoria = '$id_categoria'
	GROUP BY forotemas.id_tema
	order by respuestas.ultimafecha Desc
LEFT JOIN para asegurar que salen todos los forotemas tengan o no respuestas y usuarios.

No se si pondra primero los que tengan fecha nula (es decir que no tienen respuestas)... si fuera asi habria que canviar de estrategia, primero listar los que tengan fecha not null y luego el resto por el orden que se quiera...

De donde sacas el numero de visitas? Por que si tines que actualizarlo en cada nueva visita luego igual tampoco es tan chapuzero guardar la fecha de la ultima respuesta... y lo simplificaria todo.

Quim

Última edición por quimfv; 22/04/2008 a las 12:25
  #3 (permalink)  
Antiguo 24/04/2008, 11:03
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
Re: Ordenar temas de foro por fecha de última respuesta

Muchas gracias por la respuesta, siento no haberte respondido antes, pero como dije al principio del tema, enfermé totalmente

Al final he decido poner las fechas "manualmente", pero de todos modos, tu respuesta me ha hecho ver que necesito aprender bien mysql, porque lo del left y right join nunca lo pillé del todo.

Un saludo!
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:44.