Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.03 c
14-1087843429
YurikGL
2004-06-21 22:43
2004.07.11
Осужден первый спамер


6-1084556961
xman
2004-05-14 21:49
2004.07.11
Sockets


4-1085833368
Grinder
2004-05-29 16:22
2004.07.11
Как запретить выключение Windows НЕ используя CloseQuery?


1-1088582894
Alex_2004
2004-06-30 12:08
2004.07.11
MS Word


1-1088228074
dreams
2004-06-26 09:34
2004.07.11
Проблема с юниктом HSAdvApi , где его взять ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский