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!!!