Существуют разные подходы к этой проблеме.Например, чистый SQL .
Но я бы сказал, что решение на основе PHP проще.По сути, вам нужно поместить ваши данные в массив , затем создать цикл, который выводит желаемый порядок месяцев и имеет условие, которое определяет, есть ли у нас соответствующая строка в нашем массиве, и выводит в эфир фактические данные илиноль соответственно.
Единственная сложность - иметь такой массив, который позволил бы нам проверять доступность данных.Для этого нам нужно индексировать это с номерами месяцев.Ничего страшного на самом деле
$sql = "SELECT month(date_created), count(a.ticket_num) ...";
$res = $mysqli($sql);
$data = [];
while($row = mysqli_fetch_row($res)) {
$data[$row[0]] = $row[1];
}
Теперь $data
- это массив, индексированный по номеру месяца.Все остальное - примитивный цикл
foreach (range(1,12) as $month) {
echo $data[$month] ?: 0;
}
В дополнение к этому, я хотел бы рекламировать использование PDO, а не mysqli для взаимодействия с вашей базой данных, так как в этом случае ясно видно преимущество первого.Используя PDO, мы можем получить индексированный массив сразу, без явного цикла, благодаря специальному режиму выборки :
$sql = "SELECT month(date_created), count(a.ticket_num) ...";
$data = $data = $pdo->query($sql)->fetchAll(PDO::FETCH_KEY_PAIR);
Вот и все!