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

Форум MySQL

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

 

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

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

тема: Не могу разобраться с COUNT(*) и GROUP BY
 
 автор: sasha12342   (05.01.2013 в 21:53)   письмо автору
 
 

Здравствуйте!
Помогите решить такую задачу:
Есть таблица (tab_tel) в БД :
======================================
= id = telefon = user = city =
======================================
= 1 = 999-99-99 = colia = moskou =
======================================
= 2 = 111-11-11 = serii = piter =
======================================
= 3 = 999-99-99 = colia = moskou =
======================================
= 4 = 111-11-11 = serii = piter =
======================================
= 5 = 111-11-11 = serii = piter =
======================================
= 6 = 999-99-99 = colia = moskou =
======================================
= 7 = 111-11-11 = serii = piter =
======================================
= 8 = 999-99-99 = colia = moskou =
======================================
= 9 = 111-11-11 = serii = piter =
======================================
= 10 = 111-11-11 = serii = piter =
======================================

Выполняю запрос и вытаскиваю результат:
$xx = mysql_query("SELECT telefon, COUNT(*) FROM tab_tel GROUP BY telefon", $conn);
$rows = mysql_num_rows($xx);
$fields = mysql_num_fields($xx);

echo "<pre>";
  for ($c=0; $c<$rows; $c++) {
     for ($cc=0; $cc<$fields; $cc++) {
     echo mysql_result($xx, $c, $cc);
     echo "\n";
     }
  }
echo "</pre>";

На экран выскакивает:
999-99-99
4
111-11-11
6

Но с этими данными, в таком виде, нельзя ничего делать. Возможно ли их разбить на 4 разных переменных и потом работать с ними так как потребуется. К примеру:
$x1=999-99-99
$x2=4
$x3=111-11-11
$x4=6

Я этот вопрос задавал на другом форуме, там мне сказали, что здесь: http://php.ru/manual/function.mysql-fetch-array.html все "разжевано" но там про это вообще ничего не говорится.

  Ответить  
 
 автор: Valick   (05.01.2013 в 23:47)   письмо автору
 
   для: sasha12342   (05.01.2013 в 21:53)
 

Но с этими данными, в таком виде, нельзя ничего делать
а что вы хотите с ними сделать? вообще-то с ними можно много чего намутить, только вот подход у вас не совсем верный.
начинать надо с изучения книг по данной тематике.
кто вас научил обрабатывать запрос циклом for ?
while для этих целей гораздо удобнее, если не сказать правильнее.

  Ответить  
 
 автор: cheops   (06.01.2013 в 00:28)   письмо автору
 
   для: sasha12342   (05.01.2013 в 21:53)
 

Вот что имеется в виду
<?php
$query 
"SELECT telefon, COUNT(*) AS total FROM tab_tel GROUP BY telefon";
$xx mysql_query($query$conn); 
if(!
$xx) exit("Ошибка выполнения SQL-запроса");
// Если имеется хотя бы одна строка, продолжаем обработку
if(mysql_num_rows($xx)) {
  while(
$row mysql_fetch_array($xx)){
    
$result['phone'][] = $row['telefon'];
    
$result['total'][] = $row['telefon'];
  } 
  echo 
"<pre>";
  
print_r($result);
  echo 
"</pre>";
  
$x1 $result['phone'][0];
  
$x2 $result['total'][0];
  
$x3 $result['phone'][1];
  
$x4 $result['total'][1];
}
?>

  Ответить  
 
 автор: sasha12342   (06.01.2013 в 14:54)   письмо автору
 
   для: cheops   (06.01.2013 в 00:28)
 

Спасибо за подробный ответ!
Вы правильно меня поняли. Только Ваш запрос выдает такой ответ:
Array
(
[phone] => Array
(
[0] => 999-99-99
[1] => 111-11-11
)

[total] => Array
(
[0] => 999-99-99
[1] => 111-11-11
)

)
$x1 = 999-99-99
$x2 = 999-99-99
$x3 = 111-11-11
$x4 = 111-11-11

  Ответить  
 
 автор: Valick   (06.01.2013 в 15:31)   письмо автору
 
   для: sasha12342   (06.01.2013 в 14:54)
 

а догадаться исправить?
    $result['phone'][] = $row['telefon'];
    $result['total'][] = $row['total'];

___
кстати вы зря игнорируете наводящие вопросы того кто может вам помочь

  Ответить  
 
 автор: sasha12342   (06.01.2013 в 16:15)   письмо автору
 
   для: Valick   (06.01.2013 в 15:31)
 

Спасибо большое всем!
Работает!
Теперь буду анализировать, как это работает.
Еще раз, спасибо!

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

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