Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет количества строк разных типов из связанной таблицы - Оптимизация / 7 сообщений из 7, страница 1 из 1
26.12.2018, 13:00
    #39753354
Honcho
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
Добрый день.
Помогите, пожалуйста, оптимизировать запрос.

Сфера - социологические исследования, опросы. Есть две таблицы: polls - опросы (порядка 100 строк), tasks - задания по опросам (примерно 2000 на опрос), связаны по внешнему ключу tasks.polls_id . Каждое задание имеет один из четырех статусов: 10 - новое, 20 - в работе, 30 - на проверке, 40 - закрыто.

Задача: посчитать по каждому опросу количество заданий в разных статусах и вывести в одну строку.
Я написал такой запрос, и он работает:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT p.*, 
(select count(*) from tasks where polls_id = p.id and status = 10) as s10, 
(select count(*) from tasks where polls_id = p.id and status = 20) as s20, 
(select count(*) from tasks where polls_id = p.id and status = 30) as s30, 
(select count(*) from tasks where polls_id = p.id and status = 40) as s40 
FROM polls p left join tasks t on t.polls_id = p.id group by p.id;


но выглядит как-то неправильно, громоздко.
Помогите, пожалуйста.
...
Рейтинг: 0 / 0
26.12.2018, 13:22
    #39753369
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
авторно выглядит как-то неправильно, громоздко.
он даже не выполнится.
...
Рейтинг: 0 / 0
26.12.2018, 13:27
    #39753376
Honcho
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
ScareCrow,

выполняется и выдает правильный результат.
...
Рейтинг: 0 / 0
26.12.2018, 13:29
    #39753380
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT p.*, 
       SUM(t.status = 10) as s10, 
       SUM(t.status = 20) as s20, 
       SUM(t.status = 30) as s30, 
       SUM(t.status = 40) as s40 
FROM polls p 
left join tasks t on t.polls_id = p.id 
group by p.id;
...
Рейтинг: 0 / 0
26.12.2018, 13:35
    #39753393
Honcho
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
Akina,

Огромное спасибо! Это то, что нужно.
...
Рейтинг: 0 / 0
27.12.2018, 15:57
    #39753992
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
HonchoScareCrow,

выполняется и выдает правильный результат.
если выполняется то это очень старая версия MYSQL и результат невсегда правильный.
...
Рейтинг: 0 / 0
27.12.2018, 15:59
    #39753993
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет количества строк разных типов из связанной таблицы - Оптимизация
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подсчет количества строк разных типов из связанной таблицы - Оптимизация / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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