Как правильно сгруппировать значения

188
22 декабря 2018, 12:00

Всем доброго времени суток:)

Есть список курсов - и нужно для каждого вывести количество успешных прохождений (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"

Выводит этот код вот такое вот дело:

Считает код как нужно - все успешные прохождения - вот только я не знаю как сгруппировать, чтобы код считал для каждого курса количество успешных вхождений, как в изображении ниже:

Answer 1

Типичная ошибка начинающих в 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 в коде пойдет по всей таблице.

READ ALSO
изменении разрешение текста

изменении разрешение текста

Как сделать так, чтобы при изменении разрешения изменялся размер текста - Status server ?

247
как улучшить читаемость кода js angular?

как улучшить читаемость кода js angular?

Добрый день, такой вопрос, как переписать эту длинную фигню в несколько строк, чтобы улучшить читаемость кода?

184
Выравнивание ячейки таблицы по высоте

Выравнивание ячейки таблицы по высоте

Есть следующая таблица:

329