Выборка по сгруппированным строкам. HAVING

Рецепт №127. Из книги «128 рецептов php»
Перейти к оглавлению

В предыдущем рецепте, с помощью GROUP BY были сгруппированы строки — группировались пользователи по фамилиям и для каждой группы находился самый большой возраст. Иногда бывает необходимо помимо всего этого, еще и отсортировать полученные группы по какому-нибудь условию. Например, получить группы фамилий, у которых минимальный возраст превышает 18 лет. В таких случаях можно воспользоваться оператором HAVING, он добавляется в SQL-запрос после группировки:

SELECT last_name, min(`age`) as min_age 
FROM `tbl_users`
	GROUP BY last_name 
	HAVING min_age > 18

Пример:

// предварительно, необходимо реализовать 
// подключение к базе данных

// запрос
// при ошибке остановим скрипт и выведем ошибку
$query = mysql_query("
	SELECT last_name, min(`age`) as min_age 
	FROM `tbl_users`
		GROUP BY last_name 
		HAVING min_age > 18

") or die(mysql_error());

// получение результата запроса
$result = array();
while($row = mysql_fetch_array($query, MYSQL_ASSOC)){
	$result[] = $row;
}

// вывод результата
print_r ($result);
Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*