Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL-запрос - выборка популярных значений [MySQL]


Vetek ©   (2004-06-11 21:05:00) 

Помогите с 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

Заранее спасибо.


SergP   (2004-06-12 12:23:00) [1]


> но что значит "order by 1"  ?


Это значит типа "order by tet"


Vetek   (2004-06-12 06:43:00) [2]

Anatoly Podgoretsky ©   (11.06.04 22:42) [12]
спасибо ;)


Anatoly Podgoretsky   (2004-06-11 22:42:00) [3]

Количеством запросов, у тебя же откуда то брались эти tet вот вместо добавления строки увеличивая на единицу.


Vetek   (2004-06-11 22:38:00) [4]

добавил поле Requests типа Numeric, а чем его заполнять ?


Anatoly Podgoretsky   (2004-06-11 22:37:00) [5]

SELECT tet, Requests FROM test57 ORDER BY Requests LIMIT 0, 30

Индекс по полю Requests


Vetek   (2004-06-11 22:28:00) [6]

Anatoly Podgoretsky
спасибо, сейчас попробую


Anatoly Podgoretsky   (2004-06-11 22:27:00) [7]

Vetek   (11.06.04 22:20) [7]
Структуру я указал, будет работать еще в 100 раз быстрее.


Vetek   (2004-06-11 22:20:00) [8]

YurikGL ©   (11.06.04 21:46) [4]
а какую сделать структуру ?
- я добавил индекс, стало работать в 50 (!) быстрее !


Vetek   (2004-06-11 22:18:00) [9]

Mike Kouzmine спасибо, работает !
но что значит "order by 1"  ?
я немного переделал:
SELECT `tet` , COUNT( * ) FROM `test57` GROUP BY `tet` ORDER BY 2 DESC LIMIT 0, 30;


Mike Kouzmine   (2004-06-11 21:53:00) [10]

select tet, count(tet) from test57
group by tet
order by 1
having count(tet) > нижний предел популярности


YurikGL   (2004-06-11 21:46:00) [11]


> Vetek   (11.06.04 21:23) [3]

Почитай про теорию БД и сделай нормальную структуру. Если не можешь - пиши сюда. Начинать тебе надо с структуры.


Vetek   (2004-06-11 21:23:00) [12]

прошу без иронии, в SQL я новичок !
- а базу -ещё не выбрал


YurikGL   (2004-06-11 21:11:00) [13]


> - если MySQL не в состоянии выполнить такой запрос, то дайте
> пример запроса для MS Access


Вот это - классная фраза


Anatoly Podgoretsky   (2004-06-11 21:10:00) [14]

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

Сделай хотя бы
tet типа text
Requests Numeric


Наверх

Титульная страница Поиск, карта сайта Написать письмо