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:
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.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;
Código:
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"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;
He parido, esto, pero evidentemente, da error #1111 - Invalid use of group function0:
Código:
A la hora de hacer un SELECT con MAX(fecha_hora) no hay problema, pero si lo pongo en el WHERE es cuando casca...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)
¿Alguien que me pueda ayudar? Michas gracias!!!