|
|
|
| Имеется таблица chat
REATE TABLE `chat` (
`id_chat` int(11) NOT NULL auto_increment,
`date_read` int(11) default '0',
`date_writ` int(11) default NULL,
`mes` text,
PRIMARY KEY (`id_chat`)
)
Необходимо составить такой SQL запрос что бы получить количество всего написанных сообщений (за это отвечает поле date_writ ) и количество не прочтенных сообщений (поле date_read ) т.е если сообщение прочтенное то полк date_read содержит дату прочтения каждого сообщения. Как получить эти два значения в одном запросе ? | |
|
|
|
|
|
|
|
для: Prihod
(15.08.2007 в 15:05)
| | Я так и не понял, что Вы там хотите, но дату прочтения никакую хранить в таблице с сообщениями не надо. Это для каждого пользователя индивидуально. Что касается чатов, то, думаю, в данном случае будет достаточно хранить дату последнего обновления списка сообщений. Непрочтенные будут, естественно, те, которые имеют дату записи выше, чем дату последнего обновления страницы пользователем. | |
|
|
|
|
|
|
|
для: Prihod
(15.08.2007 в 15:05)
| | Нужно получить сумму всех значений в столбцах или требуется что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2007 в 18:24)
| | Ситуация чуть изменилась и нужно уже следующее:
имеется таблица
CREATE TABLE `chat` (
`id_chat` int(11) NOT NULL auto_increment,
`date_read` int(11) NOT NULL default '0',
`date_writ` int(11) NOT NULL default '0',
`id_to` int(11) NOT NULL default '0',
`id_from` int(11) NOT NULL default '0',
`mes` text,
PRIMARY KEY (`id_chat`)
)
Необходимо подсчитать сколько всего сообщений у каждого пользователя т.е необходимо подсчитать сколько пользователь отправил и получил сообщений. Поле id_from –это кто отправил сообщение , а id_to –кому это сообщение отправлено
К примеру имеется 2 пользователя
1-й отпр. 2 сооб. 2-му
2-й отпр. 1 сооб. 1-му
Тогда для 1-го всего сообщений 3, и у второго 3
Как это сделать в одном запросе | |
|
|
|
|
|
|
|
для: Prihod
(16.08.2007 в 18:41)
| |
SELECT
users.id, snt, rcv
FROM users
LEFT JOIN (
SELECT count(id_chat) AS snt
FROM chat
WHERE id_from =users.id
) AS ts
LEFT JOIN (
SELECT count(id_chat) AS rcv
FROM chat
WHERE id_to =users.id
) AS tr
ORDER BY user.nickname
|
| |
|
|
|
|
|
|
|
для: Trianon
(16.08.2007 в 18:55)
| | Я так понимаю что из таблицы users будут перебраны id всех юзеров ,
А как этот запрос можно модифицировать, что бы не перебирать всех пользователей из таблицы users, а брать только тех сообщения которых есть в таблицы chat . | |
|
|
|
|
|
|
|
для: Prihod
(16.08.2007 в 19:14)
| | Вы хотите не выводить нули?
Тогда добавьте в хвосте (перед ORDER BY ) WHERE snt OR rcv;
Если нет порождающей таблицы - запрос сам собой развалится на два независимх. | |
|
|
|