Выбор общего количества строк из БД 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;