Задать вопрос
@EvgMul

Что не так с моим запросом?

Здравствуйте. Мне нужно узнать количество связанных записей в двух таблицах. У меня получился следующий запрос:
select
       main.id
       count(news.id) as news,
       count(articles.id) as articles
from main
    LEFT JOIN news ON main.id = news.main_id
    LEFT JOIN articles ON articles.id = articles.main_id
group by main.id
order by news desc;


В итоге я получаю значения в полях news и articles перемноженные друг на друга.
Если делаю два запроса по одному джойну, то получаю корректные данные. Подскажите, пожалуйста, в чем моя ошибка?
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой 11 комментариев
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT main.id,
       ( SELECT COUNT(*) 
         FROM news 
         WHERE main.id = news.main_id ) news,
       ( SELECT COUNT(*) 
         FROM articles
         WHERE main.id = articles.main_id ) articles
FROM main
ORDER BY news DESC;


Предполагается, что main(id) есть уникальное поле (скорее всего первичный ключ).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы