Мне нужно сделать запрос, который вернет мне количество сообщений для диалога каждого пользователя. Я попытался сделать это сам, но он дает мне количество сообщений из всех диалогов. Вот мой запрос, который содержит параметры, которые мне нужны.Сделать запрос для подсчета сообщений для каждого диалогового окна
SELECT COUNT(*)
FROM message, dialog
WHERE (dialog.username LIKE 'acid')
AND (message.checkms=0)
AND (message.messender NOT LIKE 'acid')
AND (dialog.iddialog=message.iddialog)
CREATE TABLE `users` (
`username` varchar(45) CHARACTER SET utf8 NOT NULL,
`enabled` bit(1) NOT NULL,
`password` varchar(60) CHARACTER SET utf8 NOT NULL,
`name` varchar(30) CHARACTER SET utf8 NOT NULL,
`surname` varchar(30) CHARACTER SET utf8 NOT NULL,
`email` varchar(50) CHARACTER SET utf8 NOT NULL,
`gender` varchar(30) CHARACTER SET utf8 NOT NULL,
`age` varchar(2) NOT NULL,
`weight` varchar(2) NOT NULL,
`height` varchar(3) NOT NULL,
`sport` varchar(50) CHARACTER SET utf8 NOT NUlL,
`place` varchar(400) CHARACTER SET utf8 NOT NULL,
`photo` varchar(100) NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8;
create table dialog
(
`iddialog` int NOT NULL auto_increment,
`reciever` varchar(50) CHARACTER SET utf8 NOT NULL,
`username`varchar(45) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY(`iddialog`),
foreign key (`username`) references users(`username`)
)ENGINE=InnoDB DEFAULT CHARSET=UTF8;
create table message(
`idmessage` BIGINT not null auto_increment,
`text` varchar(300) character set utf8 NOT NULL,
`date` varchar(40) NOT NULL,
`iddialog` int NOT NULL,
`messender` varchar(50),
`checkms` boolean,
primary key (`idmessage`),
foreign key (`iddialog`) references dialog(`iddialog`)
)ENGINE=InnoDB DEFAULT CHARSET=UTF8;
Получите сообщения диалогов uers, затем выберите пользователя и диалог GROUP BY, затем COUNT сообщения каждой группы. – philipxy
В результате вашего запроса отображается 1 запись. Разве это не верно для пользователя, которого вы запросили? – Incognito