Руководство по языку программирования PHP
 

PCRE
 

PHP и mysql

Группировка данных, group by.

Группировка данных в sql запросе осуществляется при помощи конструкции group by. Применять эту конструкцию следует с функциями. Использование group by без функций просто вернет подборку уникальных значений. Покажем это на примерах.

Для начала создадим таблицу auto

id model year distance
1 Audi 2005 1000
2 Volvo 2005 15000
3 Fiat 2003 12300
4 Ford 2002 54000
5 Alfa Romeo 2005 20000

Если задать просто группировку по полю "year", то будут выданы только первые встретившиеся строки, которые имеют одинаковый год.

Пример 1:


$connection = new mysqli("localhost","root","",'mybase');
$query = "select * from auto group by year";
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
{
echo $row ['model']."
";
echo $row ['distance']."
";
echo $row ['year']."
";
}

?>

Результат:

Ford
54000
2002
Fiat
12300
2003
Audi
1000
2005

В тоже время, не стоит думать, что group by может только отбирать уникальные записи, в сочетании с функциями она может творить чудеса. В следующем примере будет показано, как сформировать результат который указывал максимальный и минимальный пробег машин за определенный год, а также количество этих машин.

Пример 2:


$connection = new mysqli("localhost","root","",'mybase');
$query = "select model, count(*), min(distance), max(distance), year from auto group by year";
$result = $connection->query($query);
while($row = mysqli_fetch_array($result))
{
echo "Год ".$row ['year']."
";
echo "Количество ".$row ['count(*)']."
";
echo "min пробег ".$row ['min(distance)']."
";
echo "max пробег ".$row ['max(distance)']."
";
}

?>

Год 2002
Количество 1
min пробег 54000
max пробег 54000
Год 2003
Количество 1
min пробег 12300
max пробег 12300
Год 2005
Количество 3
min пробег 1000
max пробег 20000

Результат показывает, что машин 2005 года три штуки, минимальный пробег машины за этот год 1000 км, а максимальный 20000 км.

Статьи по теме "Секреты вебмастера"

 

- Создание базы данных
- Создание таблиц
- Индексы в mysql
- Добавление данных
- Загрузка данных из файла
- Выборка данных
- Сортировка данных в sql запросе
- Использование функций в sql запросе
- Группировка данных
- Объединение sql запросов
- Сохранение sql запроса в файл
- Удаление данных
- Обновление данных
- Добавление и удаление столбцов
- Перестановка столбцов
- Изменение типов столбцов
- Переименование названия таблицы и столбцов
- Добавление и удаление индексов