@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 и его количеством нету, почему? Почему запрос отрабатывает не так как нужно? Что нужно исправить?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 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;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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