Forum Webscript.Ru

Общие => Базы данных => Тема начата: Don_Anton от 01 Декабря 2003, 20:54:51

Название: Как это сделать в одном запросе
Отправлено: Don_Anton от 01 Декабря 2003, 20:54:51
Есть таблица HOSTS в базе на MySQL .

ip   browser   os   language
2   MSIE 6.0
4   MSIE 5.0
5   MSIE 6.0
7   MSIE 4.0
3   MSIE 4.0
1   MSIE 6.0
9   MSIE 5.0

необходимо выбрать число разных браузеров:
у меня есть запрос
SELECT browser, COUNT(*) from HOSTS GROUP BY browser

получаю
MSIE 4.0   2
MSIE 5.0   2
MSIE 6.0   3

а как сделать, чтобы результат был отсортирован по количесвту браузеров, т.е.

MSIE 6.0   3
MSIE 4.0   2
MSIE 5.0   2

??? конечно в одно запросе
Название: Как это сделать в одном запросе
Отправлено: Yukko от 01 Декабря 2003, 20:58:56
order by ip desc
Название: Как это сделать в одном запросе
Отправлено: Макс от 01 Декабря 2003, 23:06:07
order by 2 desc
вроде
Название: Как это сделать в одном запросе
Отправлено: metton от 02 Декабря 2003, 01:07:42
2Макс
Точно, по-мом нельзя указывать столбцы, которых нет в списке выбираемых. Или мона так:

SELECT browser, COUNT(*) AS cnt from HOSTS GROUP BY browser ORDER BY cnt DESC
Название: Как это сделать в одном запросе
Отправлено: Макс от 02 Декабря 2003, 01:34:03
metton
одна из прелестей программирования в том, что здесь все можно попробовать самому, поэкспериментировать. Сделай тестовую таблицу и попробуй похожий запрос.
http://www.mysql.com/doc/ru/SELECT.html
Название: Как это сделать в одном запросе
Отправлено: metton от 02 Декабря 2003, 23:17:32
В итоге так:
SELECT browser, os, COUNT(*) AS cnt from HOSTS GROUP BY os ORDER BY cnt ASC
И даже так:
SELECT browser, os, COUNT(*) from HOSTS GROUP BY os ORDER BY ip ASC

Хм... Причём второй запрос глючит php_my_admin-а. Выдаётся ошибка
Warning: eregi(): REG_BADRPT:srepetition-operator operand invalid in e:\\internet\\home\\localhost\\www\\php_my_admin\\libraries\\display_tbl.lib.php on line 551
хотя и запрос успешно выполняется - результаты показываются...

Бред какой-то... Если изменить этот "глючный" запрос на
SELECT browser, os, COUNT(*) AS cnt from HOSTS GROUP BY os ORDER BY ip ASC
то ошибка не выдаётся...
Название: Как это сделать в одном запросе
Отправлено: Макс от 03 Декабря 2003, 00:43:31
metton
эту ошибку выдает phpMyAdmin (возможно глюк в нем) а не mysql.
Из консоли пробовал запрос выполнять ?
Название: Как это сделать в одном запросе
Отправлено: metton от 03 Декабря 2003, 20:11:38
2Макс
Да я понял, что phpMyAdmin.
Проверил в консоли - оба последних запроса выполняются нормально. Что и неудивительно. Возможно, phpMyAdmin парсит запросы перед их выполнением, и глюк - в парсере.