Всем доброго времени суток:)
Есть список курсов - и нужно для каждого вывести количество успешных прохождений (status=1) в текущем месяце.
Найти успешные прохождения в одной таблице (history) удалось, но задача стоит в том, что нужно вывести названия курсов - которые находятся в другой таблице.
Дописал до такого кода:
SELECT co.name, h.course_id, SUM(h.status=1) AS qua
FROM history h
INNER JOIN course co
ON h.course_id=co.course_id
AND h.start BETWEEN "2018-09-01 00:00:00.00" AND "2018-09-31 23:59:59.99"
Выводит этот код вот такое вот дело:
Считает код как нужно - все успешные прохождения - вот только я не знаю как сгруппировать, чтобы код считал для каждого курса количество успешных вхождений, как в изображении ниже:
Типичная ошибка начинающих в MySQL - вы забыли про group by
. Поправьте ваш запрос на:
SELECT co.name,
h.course_id,
SUM(h.status=1) AS qua
FROM history h
INNER JOIN course co ON h.course_id=co.course_id
WHERE date(h.start) BETWEEN '2018-09-01' AND '2018-09-31'
GROUP BY co.name, h.course_id
Т.к. в MySQL код без group by
допустим (в отличие от того же PL/SQL, например), то группировка без упоминания group by
в коде пойдет по всей таблице.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как сделать так, чтобы при изменении разрешения изменялся размер текста - Status server ?
Добрый день, такой вопрос, как переписать эту длинную фигню в несколько строк, чтобы улучшить читаемость кода?