Есть таблица постов post от пользователей такого вида:
post_id: 1, 2, 3, 4, 5
user_id: 1, 1, 2, 1, 3
status: 0, 0, 1, 2, 1
Задача: Вывести количество постов всего и количество постов, прошедших модерацию (где статус 1 или 2) по каждому юзеру.
Я пишу такого типа запрос:
select user_id, count(post_id) as 'all_posts', (select count(post_id)
from post where status in (1,2)) as 'approved'
from post
group by user_id
но (внезапно), подсчёт всех постов проходит норм, а подзапрос генерит одно число и копирует его по всем юзерам. Т.е. я понимаю что так и должно быть, но не понимаю как сделать чтобы подзапрос отрабатывал каждый раз свою строку.
mySql позволяет просуммировать булевы значения, автоматически преобразовывая false в 0 и true в 1. Так что в данном случае подзапрос вам просто не нужен
select user_id, count(post_id) as 'all_posts', sum(status <> 0) as 'approved'
from `likes`
group by user_id
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть приложение с БД MySQL (пользователь из интерфейса приложения БД изменять не может, только читать данные из нее), кроме того, некоторые настройки...
Возникла проблемка ,у меня должно выйти 134 элементов но почему то только 1 элемент