MySql запрос с группировкой и подсчетом

Corvin

Новичок
MySql запрос с группировкой и подсчетом

Нужно сделать выборку из базы с сортировкой по группам с результатом количества элементов в каждой группе одним запросом.
------- ------
| group | text |
------- ------
1 dssfdds
1 54rfvc
3 tgfvc
3 drf445343
4 gfdgfdgfdg
4 ggfdgfdg
3 drf445343
3 54кавмс
4 екпаааа


на выходе нужно получить:
группа 1: 2 записи
группа 2: 0 записей
группа 3: 4 записи
группа 4: 3 записи
 
При такой постановке вопроса - это не возомжно. Имя только эту таблицу с именно такой струткурой он никогда не вернет 2-ю группу (Ну, select 2, count(text) from table не считается (= ).

Если же группы все-таки хранятся в другой таблице, то RTFM join, count и order. Все три последних слова можно найти на dev.mysql.com
 

Corvin

Новичок
ок, ок. Как построить запрос без второй группы.

на выходе нужно получить:
группа 1: 2 записи
группа 3: 4 записи
группа 4: 3 записи

Ошибся с постоновкой вопроса.
 

IL78

Guest
Как вариант ответа на первый пост, в предположении, что нумерация групп непрерывна от 1 до заранее известного значения $maxnum:
PHP:
$r = mysql_query("select `group`, count(`text`) as txt1 from [i]имя_таблицы[/i] group by `group` order by `group`");

$lastgr = 0;

while ($f = mysql_fetch_assoc($r)) {
	while ($f["group"]-$lastgr > 1) { // для пропущенных групп искусственно дописываем "0 записей"
		$lastgr++;
		echo "группа ".$lastgr.": 0 записей<br />";
	}
	echo "группа ".$f["group"].": ".$f["txt1"]." записей<br />";
	$lastgr = $f["group"];
}

while ($maxnum > $lastgr) { // если пропущены группы в конце списка
	$lastgr++;
	echo "группа ".$lastgr.": 0 записей<br />";
}
не учитывается грамматика ("запись/записи/записей"), но это отдельная тема...
 
Сверху