avatar

Количество непрочитанных сообщений между двумя пользователями запрос MYSQL

Рейтинг 3.7 из 5. Голосов: 226
Den 7 лет назад
4
,

0


Ответы (4)

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
Количество непрочитанных сообщений между двумя пользователями запрос MYSQL есть 2 таблицы вида 1я id username userdata log pass 2я id idfrom idfor text isread date ..... нужно одним запросом получить имена и количество непрочитанных сообщений для каждого пользователя написавшего определенному пользователю и при этом иметь список имен всех контактов с кем переписывался некий пользователь
отправить
+ 0

Redy
avatar
За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений
503 Mar 10
7 лет назад
можно так попробовать
CODE:
SELECT *, IF(`idfrom` != :id_my, `idfrom`, `idfor`) AS user_not_me, SUM(`isread`) AS count_new FROM message WHERE (`idfrom` = :id_my OR `idfor` = :id_my) GROUP BY user_notme
получимм количество непрочитанных сообщений как для первого, так и для второго участников диалога в сумме. Что бы получить слагаемое, предназначенное для вывода количества только для одного из собеседников :
CODE:
SELECT *, IF(`idfrom` != :id_my, `idfrom`, `idfor`) AS user_notme, SUM(`isread` * IF(`idfor` = :id_my, 1, 0)) AS count_new FROM message WHERE (`idfrom` = :id_my OR `idfor` = :id_my) GROUP BY user_notme
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
а как получить имена пользователей и одновременно количество непрочитанных сообщений? JOIN ?
отправить
+ 0

Den
avatar
Модератор За 6 месяцев на форуме За год на форуме За два года на форуме за 10 сообщений За 100 сообщений за 500 сообщений За 700 сообщений №1 по сообщениям
1026 Mar 10
7 лет назад
CODE:
SELECT m.* , u.username , if(fromuserid != :id_my, fromuserid, foruserid) AS user_notme , sum(if(m.isread, 0, 1) * if(foruserid = :id_my, 1, 0)) AS count_newFROM message mJOIN user uON (u.id = if(fromuserid != :id_my, fromuserid, foruserid))WHERE (fromuserid = :id_my OR foruserid = :id_my)GROUP BY user_notme
решил
отправить
+ 0


Чтобы оставить комментарий войдите или зарегистрируйтесь