Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Лучшая 20-ка, MySQL 
:(
    Опции темы
Kefir
Дата 6.6.2004, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 1
Всего: 87



сущетвует две таблицы - rating и film. В rating идут оценки различных людей (типа [user_id][film_id][rate]). В таблице film хранится вся инфа о фильмах. надо сделать лучшую 20-ку фильмов (т.е. надо получить инфу о фильмах, средний рейтинг которых попадает в первые 20 номеров). как луше это сделать? (создавать новые таблицы не предлагайте. ничего не поменять). это рельно за один запрос сделать?
PM MAIL WWW Skype   Вверх
boevik
Дата 6.6.2004, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 2
Всего: 35



Сделать ORDER BY по максимальному рейтингу и взять первые 20 записей.
Все это делается в select без доп.таблиц и структур


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Nobody
Дата 6.6.2004, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: нет
Всего: 16



order by и limit


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
MuToGeN
Дата 6.6.2004, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



SQL
SELECT films.что-то
FROM films, rating
WHERE films.id = rating.film_id
GROUP BY films.id
ORDER BY AVG(rating.rate) DESC LIMIT 20;

Добавлено @ 22:00
Чтоб быстрее было, возможно, было бы логичнее писать среднюю оценку и кол-во голосов в таблицу с фильмами. При новом голосе высчитывать сред. оценку по формуле
ср. оценка = (старое кол-во проголосовавших * сред. оценку + новый голос) / (новое кол-во проголосовавших)
где новое кол-во проголосовавших = старое + 1



--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
boevik
Дата 7.6.2004, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 2
Всего: 35



Можно и без JOIN
Код
Select *
From films
Where films.id IN (Select film_id
                            From rating
                            GROUP BY films.id
                            ORDER BY AVG(rating.rate) DESC LIMIT 20)



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
GoodBoy
Дата 7.6.2004, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



boevik
Тебе же сказали: MySQL!!!!!!!!!!!!


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
boevik
Дата 7.6.2004, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 2
Всего: 35



GoodBoy, разве в MySql нет Subqueries?
Судя по manual, то начиная с MySQL 4.1, есть полная поддержка subqueries.



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
akul
Дата 7.6.2004, 14:16 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











это ещё не повод, тчобы их использовать. smile.gif
  Вверх
Kefir
Дата 7.6.2004, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 1
Всего: 87



спасибо. разобрался. закрыто.
PM MAIL WWW Skype   Вверх
GoodBoy
Дата 7.6.2004, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



boevik
Заходим сюда http://dev.mysql.com/downloads/index.html. Какая последняя стабильная версия??? Пра-а-авильно, 4.0!!! А у многих еще 3.23 стоит...

Это сообщение отредактировал(а) GoodBoy - 7.6.2004, 16:21


--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.