Я работаю в чате со следующим SELECT:
SELECT CLI.id, CLI.nome, CLI.senha, CLI.email, CLI.cpf, CLI.celular,
CLI.data_nasc, CLI.genero, CLI.data_cadastro, CLI.status, CLI.id_socket,
MAX(ATEN.mensagem) AS mensagem, COUNT(ATEN.mensagem) AS novas_mensagens,
SUM(COMP.valor) AS valor_total, COMP.data AS ultima_compra,
ARQ.nome AS foto, ATEN.data_mensagem, ATEN.mensagem_visualizada
FROM ut_clientes AS CLI
LEFT JOIN ut_compras AS COMP ON COMP.id_cliente = CLI.id
LEFT JOIN ut_arquivos AS ARQ ON ARQ.id_tipo = CLI.id AND ARQ.tipo = 'ut_clientes'
LEFT JOIN ut_atendimentos AS ATEN ON ATEN.id_usuario_envio = CLI.id
WHERE ATEN.id_usuario_recebido = 59163
AND NOT EXISTS(
SELECT ATEN.id_usuario_recebido
FROM ut_atendimentos AS ATEN2
WHERE ATEN2.id_usuario_envio = ATEN.id_usuario_envio
AND ATEN2.data_mensagem > ATEN.data_mensagem
)
GROUP BY ATEN.id_usuario_envio
ORDER BY ATEN.data_mensagem DESC
Данные, которые я получаю, заполняют мое мнение: http://prntscr.com/jmkkpq
Я выполняю уведомления, и COUNT, который я выполняю, не подходит, и я хотел бы знать, как правильно выполнять COUNT, так что каждый раз, когда пользователь обновляет страницу, SQL будет извлекать COUNT новых сообщений в базе данных, которые не были прочитаны.
Моя таблица: http://prntscr.com/jmkde8
Спасибо, ребята!
Можете ли вы написать поле в качестве подзадача, а не присоединиться к нему, вот так...
SELECT
CLI.id,
CLI.nome,
CLI.senha,
...
(SELECT COUNT(mensagem) FROM ut_atendimentos WHERE id_usuario_envio = CLI.id) AS novas_mensagens,
...
FROM ut_clientes AS CLI