Вопрос:
Есть таблица в mysql, с которой выбирается строка следующим образом:
SELECT * FROM table WHERE X ORDER BY RAND() LIMIT 1
в таком случае случайным образом выбирается строка из таблицы. А можно ли как-нибудь сделать, чтоб у некоторых строк был приоритет выборки выше, т.е. они чаще выбирались?
Выбор данных из mysql с приоритетом ?
-
Vlad Drakula
Re: Выбор данных из mysql с приоритетом ?
m2001
SELECT *, pr=pr*RAND() FROM table WHERE X ORDER BY pr LIMIT 1
SELECT *, pr=pr*RAND() FROM table WHERE X ORDER BY pr LIMIT 1
-
m2001
Re: Выбор данных из mysql с приоритетом ?
Vlad Drakula
Если pr - это ячейка таблицы со значением приоритета, то при такой схеме у меня оно равно нулю.
Такой запрос не совсем подходит.
Мне надо реализовать следуещее:
Предположим, в таблице есть три строки. У каждой задан приоритет, у первой -5, у второй - 3, у третей - 2.
Из php-скрипта мы посылаем запрос в базу. И надо, чтоб при 10 последовательных запусков скрипта информация из первой строки выбиралась 5 раз, из второй 3 раза и из третьей 2 раза.
Если pr - это ячейка таблицы со значением приоритета, то при такой схеме у меня оно равно нулю.
Такой запрос не совсем подходит.
Мне надо реализовать следуещее:
Предположим, в таблице есть три строки. У каждой задан приоритет, у первой -5, у второй - 3, у третей - 2.
Из php-скрипта мы посылаем запрос в базу. И надо, чтоб при 10 последовательных запусков скрипта информация из первой строки выбиралась 5 раз, из второй 3 раза и из третьей 2 раза.
-
mar
Re: Выбор данных из mysql с приоритетом ?
m2001
тогда надо после выбора update-ить таблицу (или сопряженную таблицу), где крутить счетчики. Ну и выборку осуществлять с учетом счетчиков. К сожалению неверхняя ветка mysql не знает транзакций (да и в верхней они вроде как не до конца нормально сделаны), а так в транзакциях и хранимых процедурах, или в триггерах (которых и в верхней ветке, вроде нет?) таким фокусам самое место.
тогда надо после выбора update-ить таблицу (или сопряженную таблицу), где крутить счетчики. Ну и выборку осуществлять с учетом счетчиков. К сожалению неверхняя ветка mysql не знает транзакций (да и в верхней они вроде как не до конца нормально сделаны), а так в транзакциях и хранимых процедурах, или в триггерах (которых и в верхней ветке, вроде нет?) таким фокусам самое место.
-
m2001
Re: Выбор данных из mysql с приоритетом ?
эх... mysql не оправдало возложенных на неё прогнозов... и ORDER BY RAND() работает криво.
Может кто подскажет как оптимальнее сделать таблицу с баннерами и как организовать случайный выбор баннера с приоритетом ?
Может кто подскажет как оптимальнее сделать таблицу с баннерами и как организовать случайный выбор баннера с приоритетом ?
-
Vlad Drakula
-
m2001
Re: Выбор данных из mysql с приоритетом ?
Vlad Drakula
я написал что RAND() криво работает... придется самому писать эти счетчики.
я написал что RAND() криво работает... придется самому писать эти счетчики.
-
Vlad Drakula
Re: Выбор данных из mysql с приоритетом ?
m2001
в принцепе это не сложно, но нужно не плохо продумать все чтобы достичь нужного перфоманса!
в принцепе это не сложно, но нужно не плохо продумать все чтобы достичь нужного перфоманса!
-
Igor_I
Re: Выбор данных из mysql с приоритетом ?
m2001
Цитата:
ORDER BY RAND() работает криво.
В смысле криво? (малость догадываюсь)
А как выпадают циферки на кубике, тоже криво?
Я думаю надо сделать еще одну табличку. В которую заносить кол-во показов. 5 показов - обнуление, 3 - обн..
Цитата:
ORDER BY RAND() работает криво.
В смысле криво? (малость догадываюсь)

А как выпадают циферки на кубике, тоже криво?

Я думаю надо сделать еще одну табличку. В которую заносить кол-во показов. 5 показов - обнуление, 3 - обн..