@kirill-93

Как посчитать 2 поля в mysql?

Здравствуйте. Помогите пожалуйста написать запрос.
У меня есть таблица с новостями, и таблица с новостями, который уже просмотрены конкретным пользователем. Мне нужно получить некоторую информацию и пользователе, а также общее количество непрочитанных новостей, и количество непрочитанных новостей с какого-либо источника.
В первом случае, когда нужно получить данные и количество непрочитанных новостей, делаю примерно так:
SELECT /*какие-то поля*/, count(parsed.id) - count(viewed.id) as unwatched
                FROM muz_users_subscriptions muz_sub
                LEFT JOIN muz_artists artist ON artist.id = muz_sub.entity_id
                LEFT JOIN muz_parsed_data parsed ON parsed.entity_id = artist.id
                LEFT JOIN muz_viewed viewed ON viewed.entity_id = parsed.id AND viewed.user_id = 1
                WHERE muz_sub.user_id = 1
                GROUP BY artist.id

Получаю все как надо.
А теперь мне нужно в этом же запросе помимо общего количества непрочитанных новостей, посчитать, сколько новостей именно с youtube (любой источник) не прочитано.
Пытаюсь так:
SELECT  count(parsed.id) - count(viewed.id) as unwatched,
                count(parsed_youtube.id) - count(viewed_youtube.id) as youtube_unwatched
                FROM muz_users_subscriptions muz_sub
                LEFT JOIN muz_artists artist ON artist.id = muz_sub.entity_id
                LEFT JOIN muz_parsed_data parsed ON parsed.entity_id = artist.id
                LEFT JOIN muz_viewed viewed ON viewed.entity_id = parsed.id AND viewed.user_id = 2
                LEFT JOIN muz_parsed_data parsed_youtube ON parsed_youtube.entity_id = artist.id
                                                AND parsed_youtube.url LIKE '%youtube%'
                LEFT JOIN muz_viewed viewed_youtube ON viewed_youtube.entity_id = parsed_youtube.id
                WHERE muz_sub.user_id = 2
                GROUP BY artist.id

Но результат некорректный. Помогите пожалуйста
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 1
RouR
@RouR
выкинь из джоина условие AND parsed_youtube.url LIKE '%youtube%'. добавь поле что-то вроде CASE
WHEN parsed_youtube.url LIKE '%youtube%' THEN 1
ELSE 0
END
и его уже суммируй
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы