Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.02 c
3-1086973523
Vetek
2004-06-11 21:05
2004.07.11
SQL-запрос - выборка популярных значений


4-1085406294
menart
2004-05-24 17:44
2004.07.11
Проверка подлиности пароля и имя пользователя в домене!


3-1087474359
serg128
2004-06-17 16:12
2004.07.11
Как получить сумму поля fld в TClientDataSet?


4-1085812594
mef
2004-05-29 10:36
2004.07.11
регистрайия службы


3-1087460013
Yura
2004-06-17 12:13
2004.07.11
Поле выбора + фильтрация?




   Наверх