Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сколько раз встретилось каждое уникальное значение?
 
 автор: Владимир55   (11.03.2009 в 00:33)   письмо автору
 
 

    $res = mysql_query("SELECT DISTINCT namerekl AS nam, COUNT(DISTINCT namerekl) AS cnt FROM log_vh WHERE rekl_set = '$my_rekl_set'");
    while($row = mysql_fetch_assoc($res)) echo "<br> ", $row['nam'], " ", $row['cnt'], "<br>";
Пытаюсь вытащить из таблицы log_vh все уникальные значения namerekl и подсчитать, сколько раз встречается каждое из них - не получается!

(Выводится одно значение namerekl и общее количество уникальных записей).

  Ответить  
 
 автор: root   (11.03.2009 в 20:15)   письмо автору
 
   для: Владимир55   (11.03.2009 в 00:33)
 

SELECT namerekl AS nam, COUNT(namerekl) FROM log_vh
  GROUP BY namerekl;

  Ответить  
 
 автор: Владимир55   (17.03.2009 в 14:27)   письмо автору
 
   для: root   (11.03.2009 в 20:15)
 

Как я ни пытался, так и не смог получить желаемое из этого кода! Имею просто список значений, а количество таких значений непонятно где...

Пробовал даже вот так:
    $res = mysql_query("SELECT str_vh AS cnt, COUNT(str_vh) FROM log_vh
      GROUP BY str_vh");
    while($row = mysql_fetch_assoc($res))
    {
        $str_vh   = $row['str_vh'];
        $n_str_vh = $row['cnt'];
        echo "<br> str_vh $str_vh = n_str_vh $n_str_vh ";
    }

Требуется получить список $str_vh -> $n_str_vh, где первым является уникальное значение, а вторым - сколько раз оно встречается в таблице log_vh.

  Ответить  
 
 автор: Root   (17.03.2009 в 14:53)   письмо автору
 
   для: Владимир55   (17.03.2009 в 14:27)
 

<?php
$q 
'SELECT str_vh, COUNT(str_vh) as cnt FROM log_vh
        GROUP BY str_vh'
;
$res mysql_query($q); 

while(
$row mysql_fetch_assoc($res)) 

    
$str_vh   $row['str_vh']; 
    
$n_str_vh $row['cnt']; 
    echo 
"<br> str_vh $str_vh = n_str_vh $n_str_vh "
}

  Ответить  
 
 автор: Владимир55   (17.03.2009 в 15:03)   письмо автору
 
   для: Root   (17.03.2009 в 14:53)
 

Так информация выдается, спасибо!

Скажите, а верен ли такой код (для понимания сути):
<?php
    $res 
mysql_query("SELECT DISTINCT str_vh AS cnt, COUNT(str_vh) AS ncnt FROM log_vh
      GROUP BY str_vh"
);
    while(
$row mysql_fetch_assoc($res))
    {
        
// echo mysql_errno()." 641 : ".mysql_error()."<BR>";
        
$n++;
        
$str_vh   $row['cnt'];
        
$n_str_vh $row['ncnt'];
        echo 
"<br>№ $n. str_vh $str_vh = n_str_vh $n_str_vh ";
    }

  Ответить  
 
 автор: Root   (17.03.2009 в 15:40)   письмо автору
 
   для: Владимир55   (17.03.2009 в 15:03)
 

Использование DISTINCT вместе с GROUP BY в вашем случае лишнее.

SELECT DISTINCT str_vh FROM log_vh;
и
SELECT str_vh FROM log_vh GROUP BY str_vh;
вернут одинаковые результаты.

Если нужно посчитать кол-во, используется функция COUNT.
Аггрегатным функциям нужен оператор GROUP BY для того чтобы группировать результат по какому-нибудь столбцу.
Поэтому:
SELECT str_vh, COUNT(str_vh) as cnt 
    FROM log_vh 
    GROUP BY str_vh;

  Ответить  
 
 автор: Владимир55   (17.03.2009 в 15:54)   письмо автору
 
   для: Root   (17.03.2009 в 15:40)
 

Непростое это дело, однако!

Спасибо за код и за разъяснение!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования