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

Форум MySQL

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

 

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

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

тема: Подсчет одинаковых значений в строках
 
 автор: gagaBaH   (09.06.2006 в 17:33)   письмо автору
 
 

В базе есть:

id_name_date
1_11111_555
2_11111_432
3_44444_345
4_39233_434

на выходе нужно получить
11111 - 2
44444 - 1
39233 - 1

   
 
 автор: cheops   (09.06.2006 в 17:54)   письмо автору
 
   для: gagaBaH   (09.06.2006 в 17:33)
 

Можно воспользоваться следующим запросом
SELECT SUBSTRING(id_name_date,3,5) AS id_name_date,COUNT(SUBSTRING(id_name_date,3,5))
FROM test
GROUP BY id_name_date

   
 
 автор: gagaBaH   (09.06.2006 в 18:04)   письмо автору
 
   для: cheops   (09.06.2006 в 17:54)
 

или я не понял или изначально неверно пояснил.
id_name_date - это разные столбцы. т.е. id name date - просто я их соединил на примере "_" что бы не разъехались данные... и что значит 3,5 в запросе?

   
 
 автор: cheops   (10.06.2006 в 00:46)   письмо автору
 
   для: gagaBaH   (09.06.2006 в 18:04)
 

А, я думал это один столбец... тогда всё проще
SELECT name, COUNT(name) FROM tbl GROUP BY name

   
 
 автор: gagaBAH   (10.06.2006 в 14:54)   письмо автору
 
   для: cheops   (10.06.2006 в 00:46)
 

все равно не понял!
Сейчас так:

$result = mysql_query(\"SELECT *, COUNT(name) FROM еее GROUP BY name\");
while($rowers = mysql_fetch_array($result))
    {
echo \"<br>\".$rowers[idpr];
}

выводит просто имена без их количества. А как получить значение (COUNT(name))
?

   
 
 автор: Trianon   (10.06.2006 в 15:18)   письмо автору
 
   для: gagaBAH   (10.06.2006 в 14:54)
 

<?
$result 
mysql_query("SELECT idpr, name, COUNT(name) AS cnt  FROM еее GROUP BY name") or die("Error " mysql_error()); 
while(
$rowers mysql_fetch_array($result)) 

    
$idpr $rowers['idpr'];
    
$name $rowers['name'];
    
$cnt $rowers['cnt'];
    echo 
"<br> $idpr - $name - $cnt"

?>

   
 
 автор: gagaBaH   (10.06.2006 в 15:29)   письмо автору
 
   для: Trianon   (10.06.2006 в 15:18)
 

Очень помог, спасибо большое

   
 
 автор: gagaBaH   (10.06.2006 в 16:55)   письмо автору
 
   для: Trianon   (10.06.2006 в 15:18)
 

А возможли ли еще сделать вот какое действие: есть еще поле date в нем количество 1, 4, 2, 5 и т.д.
Можно ли что бы при выводе сгруппированных данные цифры со всех столбцов прибавлялись.
К примеру что бы так вышло

id | name | date 
1  | 11111 | 555 
2  | 11111 | 432 
3  | 44444 | 345 
4  | 39233 | 434 
5  | 11111 | 2 

на выходе
11111 - 3 - 989
44444 - 1 - 345
39233 - 1 - 434

Реально такое осуществить?

   
 
 автор: Trianon   (10.06.2006 в 18:39)   письмо автору
 
   для: gagaBaH   (10.06.2006 в 16:55)
 


<? 
$result 
mysql_query("SELECT idpr, name, COUNT(name) AS cnt, SUM(date) AS sm  FROM еее GROUP BY name") or die("Error " mysql_error()); 
while(
$rowers mysql_fetch_array($result)) 

    
$idpr $rowers['idpr']; 
    
$name $rowers['name']; 
    
$cnt $rowers['cnt']; 
    
$sm $rowers['sm']; 
    echo 
"<br> $idpr - $name - $cnt - $sm"

?> 

   
 
 автор: gagaBaH   (10.06.2006 в 22:51)   письмо автору
 
   для: Trianon   (10.06.2006 в 18:39)
 

да, спасибо, разобрался ;)

   
Rambler's Top100
вверх

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