Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из БД, два запроса в одном 
:(
    Опции темы
wolfmessing
Дата 21.3.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Всем доброво времени суток, возник такой вопрос по конкретному примеру
таблица статистики (ИП, браузеры, Оси):
Код

CREATE TABLE `brows_os` (
  `ip` varchar(50) NOT NULL,
  `brows` varchar(50) NOT NULL,
  `os` varchar(50) NOT NULL,
  `date` date NOT NULL default '0000-00-00'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


и я написал функцию котокая должна отображать разные баузеры и колличество их
Код

function brows_sts(){
      $txt = "";
      $sql = "";
      global $db;
      //первый запрос выберает уникальные записи браузеров
      $sql = $db->query("SELECT `brows` FROM `brows_os` GROUP BY `brows` DESC");
      if($db->num_rows($sql)>0){
            $txt .= '
            <table width=100% border=1>
                  <tr>
                  <th width=8%>Браузер</th>
                  <th>Колличество</th>                 
                  </tr>';
            while($res_br = $db->get_array($sql)){
                  $txt .='
                        <tr>
                        <td><center>'.$res_br['brows'].'</center></td>';
                        //второй запрос покажет нам количество уникальных браузеров
                        $sql_count = $db->query("SELECT COUNT( * ) AS `brows` FROM `brows_os` 
                                          WHERE `brows` = '".$res_br['brows']."'");
                        $res = $db->get_array($sql_count);
                        $txt .='<td><center>'.$res['brows'].'</center></td></tr>';
            }
            $txt .= "</table>";
      }
      return $txt;
}
echo brows_sts();
//$db->query -- mysql_query
//$db->num_rows -- mysql_num_rows
//$db->get_array --  mysql_fetch_array

в браузере у мну получается:
Код

Браузер        кол-во 
Opera9.2        2 
Opera9.1        1 
IE6.0           3 
Firefox2.0      1 


Проблемма в том что, ни как не могу отсортировать их по колличеству в порядке убывания, например вот так:
Код

Браузер        кол-во 
IE6.0           3
Opera9.2        2 
Opera9.1        1 
Firefox2.0      1

Просто не пойму как это сделать, может 2 запроса в 1 совместить?
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 21.3.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



ну, при таком оригинальном способе получения данных следовало бы, наверное, собрать информацию в массив, и сротировать уже его. 

но лучше, по-моему, просто добавить count(*) в первый запрос. Тебе так не кажется?
PM   Вверх
wolfmessing
Дата 21.3.2008, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Цитата

по-моему, просто добавить count(*) в первый запрос.

Просто первый запрос я вывел в первую колонку, ща буду пробовать с массивом, спс за совет

Это сообщение отредактировал(а) wolfmessing - 21.3.2008, 13:38
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 21.3.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Вообще-то, совет был писать count(*) в запросе, разумеется.
И при чем здесь колонки - непонятно.
ты всегда так с базой данных работаешь - запрашиваешь только по одной колонке, а по две - никогда не пробовал?
PM   Вверх
wolfmessing
Дата 21.3.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 24.4.2007

Репутация: нет
Всего: 1



Feldmarschall, ты прав, спосиб большое
Код

SELECT `brows` , COUNT( * ) AS `br` 
FROM `brows_os` 
GROUP BY `brows` DESC 
ORDER BY `br` DESC

получилось 
Код

brows        br 
IE6.0        3
Opera9.2     2
Firefox2.0   1
Opera9.1     1


Это сообщение отредактировал(а) wolfmessing - 21.3.2008, 13:47
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0978 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.