powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сумма числа полей из нескольких таблиц без дублирования
5 сообщений из 5, страница 1 из 1
сумма числа полей из нескольких таблиц без дублирования
    #38599547
topcyprus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, господа!

Есть таблица users: id, name

есть 3 таблицы:
comments: id, user_id, comment
shares: id, user_id, share
likes: id, user_id, like

Мне надо получить общую таблицу всех пользователей, посчитав для каждого: число комментариев, число shares и likes, а также общее количество всех этих трех полей. Я сделал что-то типа

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT users.name, COUNT(comments.id), COUNT(shares.id), COUNT(likes.id), COUNT(cms_comments.id) + COUNT(shares.id) + COUNT(likes.id) AS total
FROM users

LEFT JOIN comments ON comments.user_id=users.id
LEFT JOIN shares ON shares.user_id=users.id
LEFT JOIN likes ON likes.user_id=users.id

GROUP BY users.name
ORDER BY total DESC
LIMIT 10



Однако тут дублируются строки при соединении таблиц и все суммы увеличиваются многократно. Я не могу придумать как сделать такой запрос без разбивания на подзапросы. Буду благодарен за советы.
...
Рейтинг: 0 / 0
сумма числа полей из нескольких таблиц без дублирования
    #38599573
artas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
topcyprusЯ не могу придумать как сделать такой запрос без разбивания на подзапросы. Буду благодарен за советы.
без подзапросов никак, либо они будут в секции джойна, либо в секции селекта
...
Рейтинг: 0 / 0
сумма числа полей из нескольких таблиц без дублирования
    #38599577
topcyprus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
artas,

а можете наиболее оптимальный путь подсказать?
...
Рейтинг: 0 / 0
сумма числа полей из нескольких таблиц без дублирования
    #38599579
topcyprus,

ну, если ID во всех таблицах - это действительно ID (то есть уникальный идентификатор), то можно агрегаты считать с модификатором DISTINCT. Но оптимальнее всё же будет сделать предварительную агрегацию каждой таблицы во вложенном подзапросе, а после всё заджойнить в единое целое
...
Рейтинг: 0 / 0
сумма числа полей из нескольких таблиц без дублирования
    #38599580
topcyprus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх,

ок, спасибо.

Я смог сделать через тройной UNION и сумму результатов.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сумма числа полей из нескольких таблиц без дублирования
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]