Доброго времени суток, уважаемые программисты! Такая ситуация... Есть таблица img в нём столбец kat. В столбце kat к примеру такая последовательность: 1,1,1,6,6,4,3,6,1,3... Как мне вывести количество каждой уникальной записи в этой таблице? Вывод должен быть таким; $row[0]==4; $row[1]==3; $row[2]==1; итд... Пробую делать такой запрос: $res = mysql_query("SELECT kat,COUNT(id) FROM img GROUP BY kat"); $row=mysql_fetch_row($res); Но он мне выводит только 2 записи: $row[0]==1; $row[1]==4; т.е. первый элемент - значение первой записи, а второй его количество и на этом всё, т.е $row[2] уже пустой. Заранее спасибо за содействие!
Re: Как вывести количество каждой уникальной записи в таблиц Пробуй циклы, потому что так только первую или последнюю запись выводит, точно не помню
Re: Как вывести количество каждой уникальной записи в таблиц Циклы приведут к лишней нагрузке на сервер, хотелось бы найти оптимальное решение, если оно существует.
Все это делают в циклах. Циклы - это нормально, серверу пох. Плохо когда SQL-запросы (обращения к б.д.) в циклах. А просто вывод - можно. Код (PHP): $res = mysql_query("SELECT kat,COUNT(id) FROM img GROUP BY kat"); if(mysql_num_rows($res) > 0) { while($row=mysql_fetch_row($res)) print_r($row); // смотрим, что в $row } В PDO есть fetchAll(), чтобы обойтись без цикла при получении данных: http://ru2.php.net/manual/ru/pdostatement.fetchall.php В mysqli тоже есть fetch_all(), если нужно: http://ru2.php.net/manual/ru/mysqli-res ... ch-all.php Но всё равно нужен будет цикл, чтобы эти полученные записи вывести.
Re: Как вывести количество каждой уникальной записи в таблиц Здесь $row[0]==1 - это kat=1, а $row[1]==4 - это COUNT(id)=4. Сделайте: Код (Text): $result = mysql_query("SELECT `kat`, COUNT(*) `count` FROM `img` GROUP BY `kat`;"); while($row = mysql_fetch_assoc($result)) { print "Категория {$row['kat']} содержит {$row['count']}<br />"; }
Re: Как вывести количество каждой уникальной записи в таблиц Работает! Код (Text): $result = mysql_query("SELECT `kat`, COUNT(*) `count` FROM `img` GROUP BY `kat`;"); while($row = mysql_fetch_assoc($result)) { print "Категория {$row['kat']} содержит {$row['count']}<br />"; } Интересно (для галочки), а вот в данном методе мы один раз подключившись выводим все необходимые записи или же в каждом цикле новое подключение к базе...
Re: Как вывести количество каждой уникальной записи в таблиц Обращение к базе тут одно. Его делает функция mysql_query() и возвращает в переменную $result результат запроса. Дальше функция mysql_fetch_assoc() в цикле просто перебирает этот результат.