Выбор общего количества строк из БД SQL по условию в сочетании с готовым запросом

помогите дополнить запрос. Не могу понять как сделать.

Имеем следующий набор данных:

 id user_from   user_to    check_text hidden  view_notif
1   misha       vasya      0          0       0
2   misha       vasya      0          0       0
3   misha       vasya      0          0       0
4   misha       vasya      0          0       0
5   vasya       misha      1          0       0

У меня есть следующий запрос:

    SELECT
  t.*,
  `users`.user_icon,
  `users`.user_login,
  `private_setting`.status,
  `private_setting`.status_check
FROM private_chat t
  INNER JOIN (SELECT
      `private_chat`.user_from,
      `private_chat`.user_to,
      `users`.user_login,
      MAX(`private_chat`.id) AS id
    FROM private_chat,
         users
    WHERE `private_chat`.user_from = 'misha' OR `private_chat`.user_to = 'misha'
    GROUP BY LEAST(private_chat.user_from, private_chat.user_to), GREATEST(private_chat.user_from, private_chat.user_to)) q
    ON q.id = t.id
  INNER JOIN users
    ON (t.user_from  = `users`.user_login AND t.user_from <> 'misha') OR (t.user_to  = `users`.user_login AND t.user_to <> 'misha')
  INNER JOIN `private_setting`
    ON (t.user_from  = `private_setting`.user AND t.user_from <> 'misha') OR (t.user_to  = `private_setting`.user AND t.user_to <> 'misha')

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

id  user_from   user_to
5   vasya       misha

Я не могу разобраться, куда мне в запрос подставить выборку с условием:

SELECT 
  COUNT(*) 
FROM private_chat 
  WHERE 
  (hidden = 0 && view_notif = 0 && check_text = 0) && 
  (user_to = 'vasya' && user_from = 'misha' OR user_to = 'misha' && user_from = 'vasya');

Чтобы получить что-то похожее на

id  user_from   user_to    COUNT
5   vasya       misha      4

Ответы (1 шт):

Автор решения: Akina

Вот что-то такое нужно, что ли?

SELECT MAX(id) id,
       LEAST(user_from, user_to) user_from,
       GREATEST(user_from, user_to) user_to,
       SUM(!check_text AND !hidden AND !view_notif) `COUNT`
FROM table
GROUP BY 1,2;
→ Ссылка