Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

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

Практика




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

есть 2 таблицы вида
1я id username userdata log pass

2я id idfrom idfor text isread date .....

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

и при этом иметь список имен всех контактов с кем переписывался некий пользователь

можно так попробовать

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


получимм количество непрочитанных сообщений как для первого, так и для второго участников диалога в сумме. Что бы получить слагаемое, предназначенное для вывода количества только для одного из собеседников :

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

а как получить имена пользователей и одновременно количество непрочитанных сообщений? JOIN ?

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_new
FROM
message m
JOIN user u
ON (u.id = if(fromuserid != :id_my, fromuserid, foruserid))
WHERE
(fromuserid = :id_my
OR foruserid = :id_my)
GROUP BY
user_notme

решил
создано: 2013-04-29
обновлено: 2024-11-10
387



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Базы данных - MySql (Maria DB)

Термины: Базы данных - MySql (Maria DB)