За последние 24 часа нас посетили 17780 программистов и 1722 робота. Сейчас ищет 881 программист ...

Как вывести количество каждой уникальной записи в таблице?

Тема в разделе "PHP и базы данных", создана пользователем oushen, 29 янв 2012.

  1. oushen

    oushen Активный пользователь

    С нами с:
    29 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    Доброго времени суток, уважаемые программисты! Такая ситуация... Есть таблица 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] уже пустой.
    Заранее спасибо за содействие!
     
  2. zeoril

    zeoril Активный пользователь

    С нами с:
    15 сен 2010
    Сообщения:
    15
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Пробуй циклы, потому что так только первую или последнюю запись выводит, точно не помню
     
  3. oushen

    oushen Активный пользователь

    С нами с:
    29 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Циклы приведут к лишней нагрузке на сервер, хотелось бы найти оптимальное решение, если оно существует.
     
  4. zeoril

    zeoril Активный пользователь

    С нами с:
    15 сен 2010
    Сообщения:
    15
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Тогда незнаю как помочь
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Все это делают в циклах. Циклы - это нормально, серверу пох. Плохо когда SQL-запросы (обращения к б.д.) в циклах. А просто вывод - можно.
    Код (PHP):
    1. $res = mysql_query("SELECT kat,COUNT(id) FROM img GROUP BY kat"); 
    2. if(mysql_num_rows($res) > 0) {
    3.     while($row=mysql_fetch_row($res))
    4.         print_r($row);   // смотрим, что в $row
    5. } 
    В 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

    Но всё равно нужен будет цикл, чтобы эти полученные записи вывести.
     
  6. asokol

    asokol Активный пользователь

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Здесь $row[0]==1 - это kat=1, а $row[1]==4 - это COUNT(id)=4.
    Сделайте:
    Код (Text):
    1. $result = mysql_query("SELECT `kat`, COUNT(*) `count` FROM `img` GROUP BY `kat`;");
    2. while($row = mysql_fetch_assoc($result)) {
    3.    print "Категория {$row['kat']} содержит {$row['count']}<br />";
    4. }
     
  7. oushen

    oushen Активный пользователь

    С нами с:
    29 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Работает!
    Код (Text):
    1. $result = mysql_query("SELECT `kat`, COUNT(*) `count` FROM `img` GROUP BY `kat`;");
    2. while($row = mysql_fetch_assoc($result)) {
    3.    print "Категория {$row['kat']} содержит {$row['count']}<br />";
    4. }
    Интересно (для галочки), а вот в данном методе мы один раз подключившись выводим все необходимые записи или же в каждом цикле новое подключение к базе...
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Re: Как вывести количество каждой уникальной записи в таблиц

    Обращение к базе тут одно. Его делает функция mysql_query() и возвращает в переменную $result результат запроса. Дальше функция mysql_fetch_assoc() в цикле просто перебирает этот результат.
     
  9. oushen

    oushen Активный пользователь

    С нами с:
    29 янв 2012
    Сообщения:
    5
    Симпатии:
    0
    Re: Как вывести количество каждой уникальной записи в таблиц

    Всем спасибо!