Выберите количество с двумя условиями в одном псевдониме

0

Моя таблица sql имеет следующую структуру:

id, sender, recipient, content, date_sent, last_activity, sender_read, recipient read

Это для личных сообщений. sender - это идентификатор пользователя, который отправил сообщение. Когда он получает ответ, sender_read становится 1 и тот же отправляется recipient. Мне нужно подсчитать общее количество непрочитанных сообщений, которые пользователь имеет. Я попробовал что-то вроде этого:

SELECT COUNT(CASE WHEN recipient = ? AND recipient_read = 0 THEN 1 END) as unread FROM pm 
UNION SELECT COUNT(CASE WHEN sender = ? AND sender_read = 0 THEN 1 END) as unread FROM pm

Но, похоже, это не работает. В основном мне нужно объединить два счета и вернуть один псевдоним. Как я могу это сделать?

Теги:

1 ответ

0
Лучший ответ

Просто объедините два условия в одно выражение:

SELECT COUNT(CASE WHEN recipient = ? AND recipient_read = 0 THEN 1
                  WHEN sender = ? AND sender_read = 0 THEN 1 
                  ELSE null
             END) as unread FROM pm 
WHERE recipient = ? OR sender = ? 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню