2014-02-28 2 views
0

У меня есть таблица базы данных с этими столбцами: 'dialogue', 'user_id', и 'readed'. Я хочу подсчитывать непрочитанные сообщения для каждого диалога.Как мы можем получить несколько значений count из таблицы?

Например:

select count(messageid) from messages where user_id = $id and readed=0 and diyalogid = $diyalog1 

select count(messageid) from messages where user_id = $id and readed=0 and diyalogid = $diyalog2 

select count(messageid) from messages where user_id = $id and readed=0 and diyalogid = $diyalog3 

Как я могу рассчитать количество с помощью только одного запроса?

ответ

2

Вы можете сделать это:

SELECT 
    SUM(CASE WHEN diyalogid = $diyalog1 THEN 1 ELSE 0 END) AS diyalog1Count, 
    SUM(CASE WHEN diyalogid = $diyalog2 THEN 1 ELSE 0 END) AS diyalog2Count, 
    SUM(CASE WHEN diyalogid = $diyalog3 THEN 1 ELSE 0 END) AS diyalog3Count 
FROM 
    messages 
WHERE 
    user_id = $id 
    AND readed=0 

Редактировать

Чтобы ответить вам комментарии. Я не совсем уверен, чего вы хотите. Вы можете сделать это:

SELECT 
    COUNT(*) AS theCount, 
    diyalogid 
FROM 
    messages 
WHERE 
    user_id = $id 
    AND readed=0 
GROUP BY 
    diyalogid 

Тогда вы будете иметь счета за diyalogid

+0

мы можем сделать это без $ diyalog переменные? поэтому для каждого значения diyalogid. это может быть больше похоже на систему сообщений facebook. –

+0

@AhmetAtakan: Обновить ответ – Arion

+0

спасибо, что это правильный ответ для меня. –

Смежные вопросы