sql запрос в dle

12 3
djinn11
На сайте с 16.05.2010
Offline
52
1937

Интересует sql запрос в базу...

Можно ли как то рандомно выставить рейтинг для всех существующих новостей сайта... допустим если голосов 5, то число суммарное рейтинга от 20 до 25; (то есть оценка от 4 до 5, не меньше)

А если например голосов 12, то общее число рейтинга от 48 до 60, оценка также от 4 до 5...

И при всем при этом что бы число голосов выбиралось рандомно... от например 5 до 20...

Знает ли кто нибудь такой хитрый запрос?

SIQWELL - Сервера, VDS, Хостинг во Франции, Люксембурге. Администрирование и IT обслуживание (https://siqwell.pw/aff.php?aff=003) Лучшая партнерка для download трафика! (http://loadpays.com/s.php?f=11008)
siv1987
На сайте с 02.04.2009
Offline
427
#1

Лучше всего написать небольшой скрипт, который умножил проголосовавших на 5, потом умножил на 4 и выбрал случайное число из этого интервала. На SQL имхо разве что процедурой такое можно сделать.

djinn11
На сайте с 16.05.2010
Offline
52
#2
siv1987:
Лучше всего написать скрипт

Написал в личку...

siv1987
На сайте с 02.04.2009
Offline
427
#3

Хотя...

UPDATE dle_post_extras SET rating = FLOOR(vote_num*3 + (RAND() * (vote_num*5 - vote_num*3) + 1)) WHERE vote_num>0;

djinn11
На сайте с 16.05.2010
Offline
52
#4
siv1987:
Хотя...

UPDATE dle_post_extras SET rating = FLOOR(vote_num*3 + (RAND() * (vote_num*5 - vote_num*3) + 1)) WHERE vote_num>1;

Это в этом случае чего сколько будет, расшифруйте пожалуйста...

siv1987
На сайте с 02.04.2009
Offline
427
#5

Это в этом случае будет выставляться рейтинг по вот этой формуле http://stackoverflow.com/questions/7129374/how-do-i-insert-a-random-value-into-mysql#answer-7129418 по принципу описанному постом выше /ru/forum/802455

ExVood
На сайте с 02.07.2013
Offline
39
#6

Поддерживаю! У меня подобный вопрос:

Как вывести общее кол-во звезд? Т.е. если 1ин пользователь выставил 4, а другой 3 то что бы рядом со звездами выводилось - "Рейтинг - 7".

djinn11
На сайте с 16.05.2010
Offline
52
#7
siv1987:
Это в этом случае будет выставляться рейтинг по вот этой формуле http://stackoverflow.com/questions/7129374/how-do-i-insert-a-random-value-into-mysql#answer-7129418 по принципу описанному постом выше /ru/forum/802455

1.А как правильно?

Так?

UPDATE dle_post_extras SET rating = FLOOR(vote_num*3 + (RAND() * (vote_num*5 - vote_num*3) + 1)) WHERE vote_num>0;

или так?

UPDATE dle_post_extras SET rating = FLOOR(vote_num*3 + (RAND() * (vote_num*5 - vote_num*3) + 1)) WHERE vote_num>1;

2.Этот запрос выставляет только число рейтинга? если да, то с какой по какую оценку, с 3 до 5, или с 4 до 5?

siv1987
На сайте с 02.04.2009
Offline
427
#8
ExVood:
Поддерживаю! У меня подобный вопрос:
Как вывести общее кол-во звезд? Т.е. если 1ин пользователь выставил 4, а другой 3 то что бы рядом со звездами выводилось - "Рейтинг - 7".

У вас совсем не подобный вопрос. ТС хочет рэндомно задать рейтинг новостям с учетом проголосовавших пользователей, при чем тут вывод звезд?

---------- Добавлено 14.07.2013 в 20:54 ----------

WHERE vote_num>0; - проголосовавших больше чем ноль (но не ноль)

WHERE vote_num>1; - проголосовавших больше чем один (но не один)

djinn11
На сайте с 16.05.2010
Offline
52
#9
siv1987:
WHERE vote_num>0; - проголосовавших больше чем ноль (но не ноль)
WHERE vote_num>1; - проголосовавших больше чем один (но не один)

Спасибо! Ну а оценка с какой по какую происходит?

siv1987
На сайте с 02.04.2009
Offline
427
#10
djinn11:
Ну а оценка с какой по какую происходит?

С 3 до 5. Если нужен интервал 4-5, в запросе 3 заменить на 4. По ссылке выше есть формула, можно напрячь немного мозги и сравнить с запросом. На самом деле ничего сложного нету.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий