@lemonlimelike

Почему mysql запрос не выводит запись где кол-во схождений 0?

Всем привет! Есть такой запрос, который должен вывести сервисы и количество подписок на эти сервисы в рамках определенного номера.
В этой строчке WHERE service.id in (13,74,71,72) передается список сервисов которые нужно проверить, и я знаю точно, что абонент не подписан к сервису 74

Вот мой запрос
SELECT service.id as service_id, count(subs.id) as c
FROM Subscriptions subs
INNER JOIN Services service ON subs.service_id = service.id
WHERE service.id in (13,74,71,72)
  AND subs.msisdn=992777757031
GROUP BY service.id
ORDER BY c DESC;


Он выводит вот что:

60ded1b9d802d221813132.png

И как видно из результата сервиса с номером 74 и его количеством нету, почему? Почему запрос отрабатывает не так как нужно? Что нужно исправить?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
Список требуемых id должен быть источником данных запроса, причём базовым. И при возможном отсутствии связанных записей связывание должно быть внешнее.
SELECT service.id AS service_id, COUNT(subs.id) AS c
FROM ( SELECT 13 id UNION 
       SELECT 74    UNION
       SELECT 71    UNION
       SELECT 72 ) AS service
LEFT JOIN Subscriptions subs ON subs.service_id = service.id AND subs.msisdn=992777757031
GROUP BY service.id
ORDER BY c DESC;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект