|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.08.2015, 16:12 | #1 |
Пользователь
Регистрация: 12.05.2015
Сообщений: 15
|
Одновременная сортировка по 2 полям
Здравствуйте!
Подскажите, как решить такую задачу. Есть БД, в ней таблица "рейтинг" со структурой - "subject_id", "marks", "total", где: "subject_id " - ID продукта, "marks" - сумма всех оценок данного продукта, "total" - количество всех оценок. Оценка рассчитывается так: marks / total. Необходимо составить условие сортировки для выбора "топ"-продуктов, тоесть чтобы значение "marks" было наибольшим, при этом чтобы "total" было наименьшим. Пробовал так сортировать: PHP код:
Если добавить LIMIT 1, теперь допустим есть запись "продукт1" с полями "marks" = 10, и "total" = 5 (условное поле "оценка" будет = 2) , то этот продукт будет выбран вместо другого более подходящего, например "продукт2" с полями "marks" = 5, "total" = 1 ( условное поле "оценка" = 5). Каким образом можно сделать такую сортировку? |
18.08.2015, 16:49 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
как информация к размышлению
http://www.programmersforum.ru/showt...59#post1280659
программа — запись алгоритма на языке понятном транслятору
|
18.08.2015, 19:15 | #3 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
Гораздо эффективнее сразу добавить в таблицу Рейтингов новое поле `rating`, в котором фиксировать непосредственно готовое значение оценки, вычисляемое по указанному принципу – пересчитывая это значение при каждом изменении Рейтинга продукта.
Иначе, при больших объёмах данных, запросы с прямым вычислением оценок для построения ТОП-ов, статистики и сортировок будут существенно тормозить. |
19.08.2015, 11:17 | #4 | |
Регистрация: 03.01.2013
Сообщений: 6
|
Цитата:
PHP код:
Последний раз редактировалось failure1; 19.08.2015 в 11:37. |
|
19.08.2015, 12:25 | #5 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,158
|
ну явно медленнее работать чем просто по одному полю.. вообще рекомендуется не делать ORDER BY по вычисляемым полям
|
19.08.2015, 20:22 | #6 |
Пользователь
Регистрация: 12.05.2015
Сообщений: 15
|
Решил задачу путём добавления нового поля. Спасибо!
|
19.08.2015, 22:24 | #7 |
Старожил
Регистрация: 31.05.2010
Сообщений: 3,301
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сортировка по не текстовым полям | Armageddets | БД в Delphi | 1 | 10.05.2015 12:11 |
сортировка по вычислительным полям | bratcho | БД в Delphi | 1 | 12.02.2014 14:00 |
Сортировка по созданным полям | grominfo | PHP | 6 | 16.08.2013 19:26 |
Сортировка по полям связи | A_r_r_a_y | БД в Delphi | 8 | 25.04.2009 21:11 |
Сортировка по вычисляемым полям | unit-85 | SQL, базы данных | 2 | 02.04.2009 12:05 |