@Bukreevlad

Что я пропустил в своем запросе? Верен ли он?

Добрый вечер!

Имеются примерно такие строки в таблице: (SQLite3)
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 1
consultant => 000011, read => 1
consultant => 000019, read => 0
consultant => 000034, read => 1


Данный запрос выводит то, что мне нужно! Он считает общее количество каждого consultant и выводит их количество с параметром read=0
SELECT T1.consultant, T1.count, T2.unread
FROM
  (SELECT consultant, COUNT(consultant) AS count
   FROM Messages GROUP BY consultant) T1,
   
  (SELECT consultant, COUNT(consultant) AS unread
   FROM Messages WHERE read = '0' GROUP BY consultant) T2
WHERE T1.consultant = T2.consultant;


Получаю такой ответ от запроса:
consultant => 000010, count => 4, unread => 3
consultant => 000019, count => 1, unread => 1


Но подправьте меня, он не выводит все уникальные consultant, то-есть, те которые с read=1 не выводит.. помогите..

По идее ответ должен быть таким:
consultant => 000010, count => 4, unread => 3
consultant => 000011, count => 1, unread => 0
consultant => 000019, count => 1, unread => 1
consultant => 000034, count => 1, unread => 0
  • Вопрос задан
  • 277 просмотров
Решения вопроса 1
@MrTimon
можешь немножко переделать запрос

SELECT 
    T1.consultant, count(T1.consultant) AS count, T2.unread
FROM 
    Messages T1
LEFT JOIN 
    (SELECT consultant, count(*) AS unread  FROM Messages WHERE read = '0' GROUP BY consultant) T2
ON 
    T1.consultant = T2.consultant
GROUP BY 
    T1.consultant


сам код не проверял но в результате должно получиться что то вроде этого:

consultant => 000010, count => 4, unread => 3
consultant => 000011, count => 1, unread => null
consultant => 000019, count => 1, unread => 1
consultant => 000034, count => 1, unread => null
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@aslanovich
Web/Art Designer. Front+Back-end Geek
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы