Динамический запрос

Рейтинг: -1Ответов: 1Опубликовано: 01.05.2015

Есть таблица со следующими данными: введите сюда описание изображения Нужно сделать так чтобы алгоритм подсчитывал количество часов лабораторных, лекций, семинаров. Попробовал реализовать все это через if else. Алгоритм работает, и все подсчитывает.

$bd = mysql_query("SELECT * FROM list WHERE group='ПМ11' discipline='Информатика'");
            while ($myrow = mysql_fetch_assoc($bd)) {
            $res = $myrow['type'];
            if ($res == 'Лекция') {
                //Часов лекций
                $lec = $myrow['count_hours'];

                //Количество студентов в группе
                $countstudents = $myrow['count_students'];
            }

            if ($res == 'Семинар') {
             //Часов семинаров
            $seminar = $myrow['count_hours'];
            }

            if ($res == 'Лабораторная') {
                //Часов лабораторных
                $lab = $lab + $myrow['count_hours'];
                //Количество подгрупп
                $countpodgroup++;
            }

            }
}

Но только для одной группы и одного предмета, так как я задал это в условии. А в базе множество разных групп, и у каждой группы несколько предметов. Как мне сделать так чтобы в условие запроса подставлялись остальные группы из БД(в моем случае следующая группа - ПМ12), и алгоритм обнулял все значения переменных которые были использованы ранее, и по новой рассчитывал для следующей группы...Как то структуру выборки поменять. PDO к примеру использовать как мне часто советуют.

Ответы

▲ 1

Посчитать количество часов по каждой группе

SELECT *, sum(count_hours) FROM list GROUP BY 'group'

Количество часов по каждой группе и предмету

SELECT *, sum(count_hours) FROM list GROUP BY 'group', 'type' 

А вообще, не поленись и изучи агрегатные функции. Хотя бы отсюда. Это очень мощный и полезный инстумент в sql. Это сэкономит много тебе много времени и репутации на stackoverflow.