Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2016, 15:04
Avatar de X3mdesign
X3mdesign
 
Fecha de Ingreso: octubre-2003
Ubicación: Madrid
Mensajes: 649
Antigüedad: 21 años, 4 meses
Puntos: 2
Pregunta Relacionar dos tablas (chat y accesos) comparando fechas

Hola foro, me estoy pegando con una query que relacione dos tablas.

Por un lado, tengo una tabla `chat` que guarda el id de la sala, la fecha del mensaje y el usuario que lo realizó.


Código:
CREATE TABLE IF NOT EXISTS `chat` (
  `id` int(11) NOT NULL,
  `fecha_hora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `id_usuario` int(11) NOT NULL,
  `id_sala` smallint(6) NOT NULL,
  `mensaje` mediumtext NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Y por otro lado tengo otra tabla en la que se guarda los accesos de los usuarios al ámbito de ese `chat, donde se guarda el acceso a la sala y si el usuairo ha abierto la ventana del chat.

Código:
CREATE TABLE IF NOT EXISTS `accesos` (
  `id` int(11) NOT NULL,
  `fecha_hora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `id_usuario` smallint(6) NOT NULL,
  `id_sala` smallint(6) NOT NULL,
  `viendo` varchar(50) COLLATE latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
Necesito listar las salas que tienen mensajes nuevos y el usuario no los ha leído... ojo, se podría dar el caso que el usuario no tuviera registro en accesos con viendo="chat"

He parido, esto, pero evidentemente, da error #1111 - Invalid use of group function0:
Código:
SELECT c.id_sala, MAX(a.fecha_hora), MAX(c.fecha_hora) 
   FROM chat c, accesos a 
   WHERE c.id_sala=a.id_sala AND a.id_usuario=1 AND a.viendo="chat" AND MAX(c.fecha_hora) > MAX(a.fecha_hora)
A la hora de hacer un SELECT con MAX(fecha_hora) no hay problema, pero si lo pongo en el WHERE es cuando casca...

¿Alguien que me pueda ayudar? Michas gracias!!!
__________________
Nippon-Tour, tu portal sobre Japón
¿Te gusta el manga, haces tus propios dibujos? Visita FanArt de Nippon-Tour