Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
ВнизSQL-запрос - выборка популярных значений Найти похожие ветки
← →
Vetek (2004-06-11 21:05) [0]Помогите с SQL-запросом !
SQL-запрос - выборка популярных значений
MySQL 3.x
Таблица test57 с одним полем tet типа text
содержимое - почтовые домены - пример: (повторяются)
mail.ru
glasnet.ru
mail.ru
rambler.ru
mail.ru
au.ru
необходимо выбрать самые популярные.
- у меня получается только по отдельности:
("бьюсь" над запросом уже 3 дня)
узнать, какие есть вообще домены:
SELECT DISTINCT `tet` FROM `test57`
и узнать популярность конкретного домена:
SELECT COUNT(`tet`) FROM `test57` where `tet` like("mail.ru")
а потом пробовал из списка доменов скриптом (php) каждый "пробивать" на популярность
и логить в файл, потом этот файл сортировать .. - но работает крайне медленно ..
подскажите, как можно решить поставленную задачу одним SQL- запросом ?
- и возможно ли вообще ?
- если MySQL не в состоянии выполнить такой запрос, то дайте пример запроса для MS Access
Заранее спасибо.
← →
Anatoly Podgoretsky © (2004-06-11 21:10) [1]Пример того как не надо делать, не соответствует ни одному типу нормализации, записи дублируются, ключа нет.
Сделай хотя бы
tet типа text
Requests Numeric
← →
YurikGL © (2004-06-11 21:11) [2]
> - если MySQL не в состоянии выполнить такой запрос, то дайте
> пример запроса для MS Access
Вот это - классная фраза
← →
Vetek (2004-06-11 21:23) [3]прошу без иронии, в SQL я новичок !
- а базу -ещё не выбрал
← →
YurikGL © (2004-06-11 21:46) [4]
> Vetek (11.06.04 21:23) [3]
Почитай про теорию БД и сделай нормальную структуру. Если не можешь - пиши сюда. Начинать тебе надо с структуры.
← →
Mike Kouzmine © (2004-06-11 21:53) [5]select tet, count(tet) from test57
group by tet
order by 1
having count(tet) > нижний предел популярности
← →
Vetek (2004-06-11 22:18) [6]Mike Kouzmine спасибо, работает !
но что значит "order by 1" ?
я немного переделал:
SELECT `tet` , COUNT( * ) FROM `test57` GROUP BY `tet` ORDER BY 2 DESC LIMIT 0, 30;
← →
Vetek (2004-06-11 22:20) [7]YurikGL © (11.06.04 21:46) [4]
а какую сделать структуру ?
- я добавил индекс, стало работать в 50 (!) быстрее !
← →
Anatoly Podgoretsky © (2004-06-11 22:27) [8]Vetek (11.06.04 22:20) [7]
Структуру я указал, будет работать еще в 100 раз быстрее.
← →
Vetek (2004-06-11 22:28) [9]Anatoly Podgoretsky
спасибо, сейчас попробую
← →
Anatoly Podgoretsky © (2004-06-11 22:37) [10]SELECT tet, Requests FROM test57 ORDER BY Requests LIMIT 0, 30
Индекс по полю Requests
← →
Vetek (2004-06-11 22:38) [11]добавил поле Requests типа Numeric, а чем его заполнять ?
← →
Anatoly Podgoretsky © (2004-06-11 22:42) [12]Количеством запросов, у тебя же откуда то брались эти tet вот вместо добавления строки увеличивая на единицу.
← →
Vetek (2004-06-12 06:43) [13]Anatoly Podgoretsky © (11.06.04 22:42) [12]
спасибо ;)
← →
SergP © (2004-06-12 12:23) [14]
> но что значит "order by 1" ?
Это значит типа "order by tet"
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.066 c