Нужна помощь при выводе и подсчета данных из mysql

Тема в разделе "Базы данных", создана пользователем karen12, 17 сен 2016.

Статус темы:
Закрыта.
Модераторы: latteo
  1. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    103
    Симпатии:
    2
    Есть таблица client

    id name
    1 ------ Sergey
    2 ------- Dima
    3 ------- Sasha
    4 ------- Sergey
    5 ------- Olga
    6 -- ------ Dima
    7 -------- Sasha
    8 -------- Sasha

    Как видно из таблицы имя Sergey введен 2 раза, имя Dima 2 раза, имя Sasha 3 раза, имя Olga 1 раз
    Ныжно вывести из Mysql, групировать выводимые числя вот так

    name-count count
    2 -------- 2
    1 - ------- 3
    1 --------- 1

    Помагите с кодом пожалуйста.
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.308
    Симпатии:
    2.310
    Код:
    SELECT name, count(id) FROM client GROUP BY name;
    Sergey - 2
    Dima - 2
    Sasha - 3
    Olga - 1
     
    Последнее редактирование: 17 сен 2016
  3. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    103
    Симпатии:
    2
    Это я могу сделать. Мне нужно групировать : имеется 2 значения 2, 1 значение 3, 1 значение 1. Вот что мне нужен
     
  4. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.308
    Симпатии:
    2.310
    Код:
    SELECT 
    	t1.`count`
    	, COUNT(t1.`count`) 
    FROM 
    (
    	SELECT 
    		`name`
    		, COUNT(id) as `count`
    	FROM 
    		`client` 
    	GROUP BY 
    		`name`
    ) 
    AS 
    	t1 
    GROUP BY 
    	t1.`count`
    ;
    1 1
    2 2
    3 1
    Теперь я правильно понял? Решение не лучшее, но первое, что пришло в голову. Как минимум надо кэшировать.

    @latteo, поправишь меня? :)
     
    latteo нравится это.
  5. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    103
    Симпатии:
    2
    и как вывести все это?
     
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.308
    Симпатии:
    2.310
    Так я ж запрос написал тебе ))) Выполни - получишь табличку, что я ниже написал.
     
  7. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    103
    Симпатии:
    2
    ничего не выводится
     
  8. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.308
    Симпатии:
    2.310
    Какую ошибку возвращает? Как выполняешь? Предыдущий мой запрос выводит что надо?
     
  9. karen12

    karen12 Постоялец

    Регистр.:
    26 фев 2012
    Сообщения:
    103
    Симпатии:
    2
    я затрудняюсь с остальным кодом, все так запутанно

    Сделал вот так, но выводится только $row['count']

    Код:
    <table border="1">
    <?php 
    $res = mysql_query("SELECT t1.`count`, COUNT(t1.`count`) FROM (SELECT `name`, COUNT(*) as `count`FROM `clinet` GROUP BY `name`) AS t1 GROUP BY t1.`count`");
    while($row = mysql_fetch_assoc($res)) {
    echo '<tr>';
    echo '<td>'.$row['t1'].'</td>';
    echo' <td>'.$row['count'].'</td>';
    }
    ?> 
    </table>
     
    Последнее редактирование модератором: 18 сен 2016
  10. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.308
    Симпатии:
    2.310
    А причём тут $row['t1'] ? t1 - это ссылка на таблицу, а не на колонку.
    К тому же у тебя есть открывающиеся теги, но нет закрывающихся - таблица едет...

    PHP:
    <table border="1">
    <?php 
    $res 
    mysql_query("SELECT t1.`count`, COUNT(t1.`count`) FROM (SELECT `name`, COUNT(*) as `count`FROM `clinet` GROUP BY `name`) AS t1 GROUP BY t1.`count`");
    while(
    $row mysql_fetch_array($res)) {
    echo 
    '<tr>';
    echo 
    '<td>'.$row['0'].'</td>';
    echo
    ' <td>'.$row['1'].'</td>';
    echo 
    '</tr>';
    }
    ?> 
    </table>
    И вообще, 21 век, пора переходить на mysqli...
     
    karen12 нравится это.
Статус темы:
Закрыта.